poj 1014
来源:互联网 发布:珠海联邦制药知乎 编辑:程序博客网 时间:2024/06/05 07:48
Description
Input
The last line of the input file will be "0 0 0 0 0 0"; do not process this line.
Output
Output a blank line after each test case.
Sample Input
1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0
Sample Output
Collection #1:Can't be divided.Collection #2:Can be divided.
//为什么不需要回溯?//从后往前递归,则前面的数可表示出后面的数,保留可表示性多的数 (贪心) // 题目可以理解为:是否存在x1,x2,x3,x4,x5,x6,并且x1,x2...x6 的值小于或等于题目所给的值,// 使得X1 + 2*X2 + 3*X3 + 4*X4 + 5*X5 + 6*X6 ==SUM/2;// 证明为什么不需要回溯:// 假设存在某次回溯的情况使得答案正确,也就是说 // 则说明存在X1+2*X2+3*X3+4*X4+5*X5+6*(X6-1)=(SUM/2)= t + 6;// 也就是1至5中存在某个组合使得 x?*? + x?*?=6 即6可由前面的表示,t也可以用前面的表示// 即然t可以表示,那么反过来就可以保留6了 #include<stdio.h>int flag;int a[7];int sum,half;void dfs(int num,int pos){if(flag==1)return;if(num==half){flag=1;return;}for(int i=pos;i>=1;i--)if(a[i]>0 && num+i<=half){a[i]--;dfs(num+i,i);}}int main(){int count=0;while(1){flag=0;sum=0;for(int i=1;i<7;i++){scanf("%d",&a[i]);sum=sum+a[i]*i;}if(!sum)break;printf("Collection #%d:\n",++count);if(sum%2){printf("Can't be divided.\n\n");continue;}half=sum/2;dfs(0,6);if(flag==1)printf("Can be divided.\n\n");else printf("Can't be divided.\n\n");}return 0;}
- POJ 1014
- poj 1014
- poj 1014
- POJ 1014
- poj 1014
- poj 1014
- poj 1014
- POJ 1014
- poj 1014
- POJ 1014 Dividing
- POJ 1014 Dividing
- poj 1014 Dividing
- poj 1014Dividing
- POJ 1014 Dividing
- poj 1014 装箱问题
- 【多重背包】POJ 1014
- POJ 1014 多重背包
- poj 1014 硬币分割
- JDBC连接mysql数据库
- py-faster-rcnn配置运行faster_rcnn_end2end—VGG_CNN_M_1024(Ubuntu14.04)
- [REVIEW] NOIP 2015 Day2 解题报告
- 透镜畸变及校正模型
- BZOJ 4569: [Scoi2016]萌萌哒
- poj 1014
- poj3984 迷宫问题 bfs
- Linux 系统命令及其使用详解(上)
- Maven系列(五)CentOS7搭建最新GitLab
- SQL
- 几条好玩的linux命令
- debug caffe
- delphi 数据库操作
- linux驱动开发:input子系统三