您的位置:首页 > 其它

poj 1014 Dividing (dfs???)

2016-03-16 18:29 281 查看
poj 1014

待更新。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
int num[7];
int flag;
void dfs(int left) {
if(flag) return;
if(left == 0) {
flag = 1;
return;
}
int i;
for(i = 6; i >= 1; i--) {
if(num[i] && i <= left) {
num[i]--;
dfs(left - i);
//num[i]++;
}
}
}
int main() {
int n = 0;
while(~scanf("%d %d %d %d %d %d", num + 1, num + 2, num + 3, num + 4, num + 5, num + 6) && num[1] + num[2] + num[3] + num[4] + num[5] + num[6]) {
printf("Collection #%d:\n", ++n);
int i, j;
int sum = 0, half;
for(i = 1; i < 7; i++) {
sum += num[i] * i;
}
if(sum % 2 == 0) half = sum / 2;
else {
printf("Can't be divided.\n");
printf("\n");
continue;
}
flag = 0;
dfs(half);
if(flag) printf("Can be divided.\n");
else printf("Can't be divided.\n");
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: