SOJ 3300_Stockholm Coins
2015-11-09 21:15
295 查看
【题意】给n个数,求一个数,使这个数能且只能由(n个数每个至少出现一次)表示。输出满足条件的最小的数。
【分析】(完全背包)如果有满足条件的最小的数,那么这个数只能是这n个数的和total,通过记录每个可能和的组合数,求出total的组合数,如果为1则表示满足条件,即n个数每个正好出现一次,若>1,则找不到这样的数,即输出-1。
【代码】
【分析】(完全背包)如果有满足条件的最小的数,那么这个数只能是这n个数的和total,通过记录每个可能和的组合数,求出total的组合数,如果为1则表示满足条件,即n个数每个正好出现一次,若>1,则找不到这样的数,即输出-1。
【代码】
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,total; int b[35]; int v[350000]; int cash() { total=0; scanf("%d",&n); memset(v,0,sizeof(v)); v[0]=1; for(int i=0;i<n;i++) { scanf("%d",&b[i]); total+=b[i]; } for(int i=0;i<n;i++) { for(int j=b[i];j<=total;j++) v[j]+=v[j-b[i]]; } if(v[total]==1) return total; else return -1; } int main (void) { int c; scanf("%d",&c); while(c--) { getchar(); printf("%d\n",cash()); } return 0; }
相关文章推荐
- 最长上升子序列(含例题)
- SOJ 2749_The Fewest Coins
- SOJ 2785_Binary Partitions
- UVa 12563_Jin Ge Jin Qu hao
- UVA 1025_A Spy in the Metro
- SOJ 2930_积木城堡
- SOJ 2818_QQ音速
- SOJ 2800_三角形
- SOJ 3531_Number Pyramids
- SOJ 3300_Stockholm Coins
- JAVA中使用AES加密
- 搭建Erlang语言开发环境(文本编辑器+Erlang OTP,不是绑定IDE的环境)
- ionic tab选项卡置于顶部
- css布局 : 居中问题
- 课堂作业
- CI
- 二叉树的镜像
- 面向对象程序设计(一)—— 创建型模式之抽象工厂模式
- 如何查看 oracle 官方文档
- [转]程序员练手小项目