poj解题报告——1014
来源:互联网 发布:阿里云os系统电视 编辑:程序博客网 时间:2024/05/29 09:47
题意: 有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两份的总价值相等,其中一个物品不能切开,只能分给其中的某一方,当输入六个0是(即没有物品),这程序结束,总物品的总个数不超过20000
代码如下
#include<stdio.h>#include<string.h>int a[7],sum,b[100],n;int dp[60001];void main(){int i,j,k,t=1,x; while(1) {sum=0;for(i=1;i<=6;i++){scanf("%d",&a[i]);sum+=a[i];}if(sum==0) break; printf("Collection #%d:\n", t++); sum=0; n=0; for(i=1;i<=6;i++) { sum+=a[i]*i; k=0; b[n++]=k*i; k++; x=0; while(x+k<a[i]) { b[n++]=k*i; x+=k; k=k*2; } if(a[i]>x)b[n++]=(a[i]-x)*i; } if(sum%2){ printf("Can't be divided.\n\n"); continue; } memset(dp,0,sizeof(dp)); dp[0]=1; for(i=0;i<n;i++) for(j=sum/2;j>=b[i];j--) if(dp[j-b[i]])dp[j]=1; if(dp[sum/2]) printf ("Can be divided.\n\n"); elseprintf ("Can't be divided.\n\n"); }}
0 0
- poj解题报告——1014
- poj 1014 解题报告
- POJ 1014 解题报告
- POJ 1088 滑雪——解题报告
- POJ 1047——解题报告
- poj解题报告——poj1006
- poj解题报告——1032
- poj解题报告——1061
- poj解题报告——1450
- poj解题报告——1002
- poj解题报告——2109
- poj解题报告——1218
- poj解题报告——1250
- poj解题报告——1012
- poj解题报告——3299
- poj解题报告——2209
- poj解题报告——2406
- poj解题报告——2242
- timebox管理
- 例题10-16 过河 UVa12230
- 博客宣言
- Android L Phone进程初始化_02
- oschina-app源码分析-提醒标签BadgeView使用逻辑流程
- poj解题报告——1014
- hdu 2516 取石子游戏 Fibonacci博弈 入门题
- 软件
- SCRUM 的 关键角色, 产品, 燃尽图 与 常见会议
- 关于AMD HD 7800、7850显卡多屏的配置
- 现代经济感悟(3)-不协调的电商C-未来和期盼
- spring aop(八)--使用BeanNameAutoProxyCreator创建代理
- OAuth授权简介
- QWebView + JS 实现简单地图