#include<iostream>
#include<stdio.h>
using namespace std;
int arr[7];
bool fl;
void DFS(int num,int sum,int ar)
{
if(num==sum)
{
fl=true;
return;
}
if(sum<num)
{
for(int i=ar;i>=1;i--)//分支递归
{
if(arr[i])
{
sum+=i;
arr[i]--;
if(sum>num)
{
arr[i]++;
sum-=i;
continue;
}
DFS(num,sum,ar);
}
}
}
}
int main()
{
int k=1;
while(1)
{
int asum=0;
bool flag=true;
for(int i=1;i<=6;i++)
{
cin>>arr[i];
asum+=arr[i]*i;
if(arr[i])
flag=false;
}
if(flag)
break;
cout<<"Collection #"<<k++<<':'<<endl;
if(asum%2)
{
cout<<"Can't be divided."<<endl<<endl;
continue;
}
fl=false;
DFS(asum/2,0,6);
if(fl)
cout<<"Can be divided."<<endl<<endl;
else
cout<<"Can't be divided."<<endl<<endl;
}
return 0;
}
zoj1149-Dividing
最新推荐文章于 2022-05-03 19:30:00 发布