分组背包----HDU1712 ACboy needs your help
很简单的一道分组背包入门问题。不多解释了。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 5 using namespace std; 6 7 int N,M,A[108][108]; 8 int dp[108]; 9 10 inline int Max(int a,int b) 11 { 12 if(a>b) return a; 13 return b; 14 } 15 16 int main() 17 { 18 while(scanf("%d%d",&N,&M),(N||M)) 19 { 20 for(int i=1;i<=N;i++) 21 for(int j=1;j<=M;j++) 22 scanf("%d",&A[i][j]); 23 memset(dp,0,sizeof(dp)); 24 25 for(int i=1;i<=N;i++) 26 { 27 for(int j=M;j>=0;j--) 28 { 29 for(int k=0;k<=j;k++)//dp[j-k]+ 30 dp[j]=Max(dp[j],dp[k]+A[i][j-k]); 31 } 32 } 33 printf("%d\n",dp[M]); 34 } 35 return 0; 36 }