01背包与完全背包

01背包 每个物品只能使用一次         完全背包 物品重复使用          
//方法1先背包,后物品           //方法1先背包,后物品          
for(int j = 0; j <= bagweight; j++) { // 遍历背包容量     for(int j = 0; j <= bagweight; j++) { // 遍历背包容量    
 for(int i = 1; i < weight.size(); i++) { // 遍历物品      for(int i = 1; i < weight.size(); i++) { // 遍历物品    
   if (j < weight[i]) dp[i][j] = dp[i - 1][j];          if (j < weight[i]) dp[i][j] = dp[i - 1][j];      
   else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);      else dp[i][j] = max(dp[i - 1][j], dp[i ][j - weight[i]] + value[i]);  
 }                }              
                               
//方法2先物品后背包           //方法2先物品后背包          
for(int i = 1; i < weight.size(); i++) { // 遍历物品       for(int i = 1; i < weight.size(); i++) { // 遍历物品      
    for(int j = 0; j <= bagweight; j++) { // 遍历背包容量         for(int j = 0; j <= bagweight; j++) { // 遍历背包容量    
      if (j < weight[i]) dp[i][j] = dp[i - 1][j];             if (j < weight[i]) dp[i][j] = dp[i - 1][j];      
      else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);         else dp[i][j] = max(dp[i - 1][j], dp[i ][j - weight[i]] + value[i]);  
   }                  }              
                               
//方法3一维数组 只能先物品后背包,并且背包要倒序     一维数组1            
for(int i = 0; i < weight.size(); i++) { // 遍历物品       // 先遍历背包,再遍历物品          
    for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量   for(int j = 0; j <= bagWeight; j++) { // 遍历背包容量    
      dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);       for(int i = 0; i < weight.size(); i++) { // 遍历物品    
   }                   if (j - weight[i] >= 0) dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
 }                }              
                }              
                一维数组2            
                for(int i = 0; i < weight.size(); i++) { // 遍历物品      
                    for(int j = weight[i]; j <= bagWeight; j++) { // 遍历背包容量  
                      dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);    
                   }              
                 }              
                               

你可能感兴趣的:(算法,算法)