1 int Bag01( int m,int n,int w[], int p[] )//n为背包容量,m为物品数量;w[] 为物品的重量;p[]为物品的价值 2 { 3 int c[10][100];//最优子结构矩阵,m<10,n<100 4 int i,j; 5 for( i=0;i<10;i++ ) 6 for( j=0;j<100;j++ ) 7 c[i][j]=0; 8 9 for( i = 1;i < n+1;i++ ) 10 for( j = 1;j < m+1;j++ ) 11 { 12 if( w[i] > j ) //第i个物品的重量 > 包的容量; 13 c[i][j] = c[i-1][j]; 14 else 15 { 16 if( p[i]+c[i-1][j-w[i]] > c[i-1][j] )//所以第i行的数据是从第i-1行得来的。 17 c[i][j] = p[i]+c[i-1][j-w[i]]; 18 else 19 c[i][j] = c[i-1][j]; 20 } 21 } 22 return( c[n][m] ); 23 }