动态规划01背包算法

 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 }

posted on 2012-04-09 23:33  NLP新手  阅读(744)  评论(0编辑  收藏  举报

导航