SOJ 3300_Stockholm Coins
2015-11-09 21:15
375 查看
【题意】给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; }
相关文章推荐
- JAVA中使用AES加密
- 搭建Erlang语言开发环境(文本编辑器+Erlang OTP,不是绑定IDE的环境)
- ionic tab选项卡置于顶部
- css布局 : 居中问题
- 课堂作业
- CI
- 二叉树的镜像
- 面向对象程序设计(一)—— 创建型模式之抽象工厂模式
- 如何查看 oracle 官方文档
- [转]程序员练手小项目
- 把ListView和GridView与AppBar实现上下联动
- 数据结构实验之二叉树一:树的同构
- 链队列的算法操作
- iOS第四周 培训第一天
- 浅谈Java读取Csv实践(javacsv)
- 关于在android开发中使用jsoup的详解
- 最短路算法及其延伸
- 2015/11/9
- 移动鼠标时得不到WM_MOUSEMOVE消息
- 解决UBUNTU系统软件安装过程出现libdirectfb-1.2-9_1.2.10.0-5_amd64.deb无法安装的问题