概述
一道神奇的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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复