B
来源:互联网 发布:linux info命令 编辑:程序博客网 时间:2024/05/01 21:22
假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列顺序无关,比如ACM与CMA认为是同一个单词)。 Input 输入首先是一个整数N,代表测试实例的个数。 然后包括N行数据,每行包括26个<=20的整数x1,x2,.....x26. Output 对于每个测试实例,请输出能找到的总价值<=50的单词数,每个实例的输出占一行。 Sample Input 21 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 09 2 6 2 10 2 2 5 6 1 0 2 7 0 2 2 7 5 10 6 10 2 10 6 1 9
Sample Output 7379297
#include<stdio.h>#include<string.h>int main(){ int x[50],i,j,n,sum,k,a1[100],a2[100]; scanf("%d",&n); while(n--) { sum=0; for(i=1;i<=26;i++) scanf("%d",&x[i]); memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); a1[0]=1; for(i=1;i<=26;i++) { for(j=0;j<=50;j++) for(k=0;k<=x[i]&&k*i+j<=50;k++) a2[j+k*i]=a2[j+k*i]+a1[j]; memcpy(a1,a2,sizeof(a2)); memset(a2,0,sizeof(a2)); } for(i=1;i<=50;i++) sum=sum+a1[i]; printf("%d\n",sum); } return 0;}
阅读全文
0 0
- b
- b
- b
- //b
- B
- b
- B
- B
- B
- B
- b
- B
- B
- B
- B
- B
- B
- b
- form表单以及table表格
- 炒鸡炫酷的安卓动画,值得学习
- <胡策day> 11.1 数学+数学+二分、并查集
- cv2 python 图片的批量处理
- HP ProLiant 服务器进入BIOS 按键总结
- B
- pip安装到用户目录(不需要管理员权限)
- vue重定向
- Type def recipe not found: **/build/intermediates/typedefs.txt
- 二维码的生成和扫描
- Java作业@2017.10.28-10.29
- Mycat从入门到放弃
- 45. Jump Game II (贪心)
- 无聊的序列 洛谷p3940