Dividing 03多重背包问题 (二)

2014-11-24 08:25:56 · 作者: · 浏览: 1
f(dp));
int sum=n[1];
int t;
for(int i=2; i<=6; i++)
{
scanf("%d",&t);
n[i]=t%10;
sum+=i*n[i];
}
if(n[1]==0&&n[2]==0&&n[3]==0&&n[4]==0&&n[5]==0&&n[6]==0) break;
if(sum%2==1)
{
printf("Collection #%d:\nCan't be divided.\n\n",test);
test++;
continue;
}
for(int i=1; i<=6; i++)
v[i]=i;
int V=sum/2;
dp[0]=1;
for(int i=1; i<=6; i++)
{
for(int j=0; j
{
for(int k=V; k>=v[i]; k--)
{
if(dp[k-v[i]])
dp[k]=1;
}
}
}
// for(int i=V;i>=0;i--)
//printf("%d %d\n",dp[i],i);
if(dp[V]==1)
{
printf("Collection #%d:\nCan be divided.\n\n",test);
test++;
}
else
{
printf("Collection #%d:\nCan't be divided.\n\n",test);
test++;
}
}
return 0;
}