我是靠谱客的博主 舒服音响,最近开发中收集的这篇文章主要介绍CodeForces 156C Cipher,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一道神奇的dp题。。。

//字符串不管如何处理,其ASCII码总和不变,故凡是长度相同,字母和相同的串都可以转换 
//所以f[i][j]的i表示的是字符串的长度,j表示的是字符串所有字母加起来的和,状态转移方程为f[i+1][j+k]+=f[i][j](1<=k<=26). 

#include<stdio.h>

#include<stdlib.h> 
#include<string.h>
#define mod 1000000007
char s[110];
int f[110][3000];
int main()
{
  int t,i,j,k,len;
  int sum; 
  memset(f,0,sizeof(f)); 
  f[0][0]=1;
  for(i=0;i<=105;i++)
    for(j=0;j<3000;j++){ 
       if(f[i][j]>0){ 
         for(k=0;k<26;k++){   
            f[i+1][j+k]+=(f[i][j]%mod);
            f[i+1][j+k]%=mod;
         }                 
       }
    }
  scanf("%d",&t);
  while(t--){
    scanf("%s",s);
    len=strlen(s); 
    sum=0;
    for(i=0;i<len;i++){
      sum+=s[i]-'a';                 
    }
    printf("%dn",f[len][sum]-1);              
  }  
  //system("pause"); 
  return 0;    

最后

以上就是舒服音响为你收集整理的CodeForces 156C Cipher的全部内容,希望文章能够帮你解决CodeForces 156C Cipher所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部