#include<stdlib.h> #include<string.h> int w[7] = {0}; int(int T,int p) { if ( p < 1) return0; if (!T) return1; while (w[p] == 0 || p > T) p--; w[p]--; //做二分选择放入背包和不放入背包 return ( knap(T-p,p) || knap(T,p-1)); } intmain() { freopen("Sample Input.txt","r",stdin); int cse; int i,Flag; int HalfSpace; cse = 1; while ( scanf("%d%d%d%d%d%d",&w[1],&w[2],&w[3],&w[4],&w[5],&w[6]),w[1]||w[2]||w[3]||w[4]||w[5]||w[6]) { HalfSpace = 0; for ( i = 1; i <= 6; i++) HalfSpace += w[i]*i; if ( HalfSpace%2 ) Flag = 0; else { HalfSpace/=2; Flag = knap(HalfSpace,6); } printf("Collection #%d:n",cse++); if ( Flag ) printf("Can be divided.nn"); else printf("Can't be divided.nn"); } return0; }
近期评论