#include "stdio.h"
#include "string.h"
int main()
{
int Case,k,key,sum,i,j;
int dp[60010];
int a[10];
Case=1;
while (scanf("%d",&a[1])!=EOF)
{
sum=a[1];
for (i=2;i<=6;i++)
{
scanf("%d",&a[i]);
sum+=a[i]*i;
}
if (sum==0) break;
if (sum%2==1)
{
printf("Collection #%d:\n",Case++);
printf("Can't be divided.\n\n");
continue;
}
key=sum/2;
memset(dp,0,sizeof(dp));
dp[0]=1;
for (i=1;i<=a[1] && i<=key;i++) dp[i]=1;
for (i=2;i<=6;i++)
for (j=key;j>=0;j--)
{
if (dp[j]==0) continue;
for (k=1;k<=a[i] && j+k*i<=key;k++)
{
if (dp[j+k*i]==1) break;
dp[j+k*i]=1;
}
}
printf("Collection #%d:\n",Case++);
if (dp[key]==1)
printf("Can be divided.\n\n");
else
printf("Can't be divided.\n\n");
}
return 0;
}
HDU 1059 背包
最新推荐文章于 2020-04-02 16:55:44 发布