记录编号 271979 评测结果 A
题目名称 [POJ 1014] 大理石分割 最终得分 100
用户昵称 Gravatar安呐一条小咸鱼。 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2016-06-16 14:36:21 内存使用 0.31 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int a[100];
int sum,half;
bool flag=false;
void dfs(int value,int num)
{
	if(flag)
	{
		return;
	}
	if(value==half)
	{
		flag=true;
		return;
	}
	for(int i=num;i>=1;i--)
	{
		if(a[i])
		{
			if(value+i<=half)
			{
				a[i]--;
				dfs(value+i,i);
				if(flag)
				{
					break;
				}
			}
		}
	}
	return;
}
int main()
{
	freopen("dividestone.in","r",stdin);
	freopen("dividestone.out","w",stdout);
	int cnt=1;
	flag=false;
	while(!flag)
	{
		sum=0;
		for(int i=1;i<=6;i++)
		{
			scanf("%d",&a[i]);
			if(a[i])
			{
				flag=true;
			}
		}
		if(!flag)break;
		printf("Collection #%d:\n",cnt);
		cnt++;
		for(int i=1;i<=6;i++)
		{
			sum+=i*a[i];
		}
		flag=false;
		if(  !(sum%2) )
		{
			half=sum/2;
			dfs(0,6);
		}
		if(flag)
		{
			puts("Can be divided.");
		}
		else
		{
			puts("Can't be divided.");
		}
		puts("");
		flag=false;
	}
	//while(1);
	//system("pause");
	return 0;
}