首页 > 其他 > 详细

ZJNU 1153 - 找单词——中级

时间:2020-01-19 14:29:29      阅读:45      评论:0      收藏:0      [点我收藏+]

状态转移
b[i]记录价值为i的单词种类数
d[j+k*i]+=b[j] , k<=a[i]&&j+k*i<=50
表示价值为j+k*i的单词可以由价值为j的单词加上k个i字母转移而来
最后统计即可

 1 /*
 2 Written By. StelaYuri
 3 */
 4 #include<stdio.h>
 5 int main(){
 6     int T,t,i,j,k,a[27]={0},b[51],d[51],s;
 7     scanf("%d",&T);
 8     for(t=0;t<T;t++){
 9         for(i=1;i<27;i++)
10             scanf("%d",&a[i]);
11         for(i=0;i<51;i++)
12             b[i]=d[i]=0;
13         b[0]=1;
14         for(i=1;i<27;i++){
15             for(j=0;j<51;j++)
16                 for(k=0;k<=a[i]&&j+k*i<=50;k++)
17                     d[j+k*i]+=b[j];
18             for(j=0;j<51;j++){
19                 b[j]=d[j];
20                 d[j]=0;
21             }
22         }
23         for(s=0,i=1;i<51;i++)
24             s+=b[i];
25         printf("%d\n",s);
26     }
27     return 0;
28 }

ZJNU 1153 - 找单词——中级

原文:https://www.cnblogs.com/stelayuri/p/12213457.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!