当前位置: 首页 > 编程笔记 >

解决0-1背包问题的C ++程序

彭胡媚
2023-03-14
本文向大家介绍解决0-1背包问题的C ++程序,包括了解决0-1背包问题的C ++程序的使用技巧和注意事项,需要的朋友参考一下

在0-1背包问题中,给出了一组项目,每个项目都有一个权重和一个值。我们需要确定要包含在集合中的每个项目的数量,以使总重量小于或等于给定的限制,并且总值尽可能大。

输入项

Value = [10, 20, 30, 40, 60, 70]
Weight=[1, 2, 3, 6, 7, 4]
int w=7

输出结果

knapsack value is: 100

算法

Begin
   Input: set of items each with a weight and a value
   Set knapsack capacity
   Number of items=sizeof(values) / sizeof(values[0])
   Knapsack(Values (stored in array v), Weights (stored in array w), Number of
   distinct items (n), Knapsack capacity W)
   If (w < 0)
      Return
   If no items left or capacity becomes 0
      Return 0
   Include current item n in knapSack (v[n]) and recurs for
   remaining items (n - 1) with decreased capacity (W - w[n])
   Exclude current item n from knapSack and recurs for
   remaining items (n - 1)
   Return maximum value we get by including or excluding current item
End

范例程式码

#include <iostream>
#include <climits>
using namespace std;
int knapSack(int v[], int w[], int n, int W) {
   if (W < 0)
      return INT_MIN;
   if (n < 0 || W == 0)
      return 0;
   int in = v[n] + knapSack(v, w, n - 1, W - w[n]);
   int ex = knapSack(v, w, n - 1, W);
   return max (in, ex);
}
int main() {
   int v[] = { 10, 20, 30, 40, 60, 70 };
   int w[] = { 1, 2, 3, 6, 7, 4 };
   int W = 7;
   int n = sizeof(v) / sizeof(v[0]);
   cout << "Knapsack value is " << knapSack(v, w, n - 1, W);
   return 0;
}

输出结果

Knapsack value is 100
 类似资料:
  • 本文向大家介绍C中的0-1背包问题?,包括了C中的0-1背包问题?的使用技巧和注意事项,需要的朋友参考一下 背包是袋子。背包问题是根据物品的值将物品放入袋中的。目的是使袋子内的值最大化。在0-1背包中,您既可以放置物品也可以将其丢弃,没有将物品的某些部分放入背包的概念。 样本问题 重量分布 最大值为65,因此我们将项目2和3放入背包。 0-1背包问题计划 输出结果

  • 本文向大家介绍解决分数背包问题的C ++程序,包括了解决分数背包问题的C ++程序的使用技巧和注意事项,需要的朋友参考一下 在小背包问题中,给出了一组项目,每个项目都有一个权重和一个值。我们需要打破物品以最大化背包的总值,这可以通过贪婪的方法来完成。 算法 范例程式码 输出结果

  • 本文向大家介绍C#使用动态规划解决0-1背包问题实例分析,包括了C#使用动态规划解决0-1背包问题实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用动态规划解决0-1背包问题的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍PHP回溯法解决0-1背包问题实例分析,包括了PHP回溯法解决0-1背包问题实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP回溯法解决0-1背包问题的方法。分享给大家供大家参考。具体分析如下: 这段代码是根据《软件设计师》教程的伪代码写的; 最麻烦的不是伪代码改成php,而是数组下标从0开始,及相应的下标判断问题; 带着调试输出一块写上 希望本文所述对大家的ph

  • 本文向大家介绍PHP动态规划解决0-1背包问题实例分析,包括了PHP动态规划解决0-1背包问题实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了PHP动态规划解决0-1背包问题。分享给大家供大家参考。具体分析如下: 背包问题描述:一个承受最大重量为W的背包,现在有n个物品,每个物品重量为t, 每个物品的价值为v。 要使得这个背包重量最大(但不能超过W),同时又需要背包的价值最大。 思

  • 我正在为即将到来的测试复习,想知道是否有人能重述问题的b部分。这是从分发的复习表中得到的文本,但我不确定b部分到底在问什么。我更直截了当地猜测“生成一个不到0/1背包问题最优值1%的解”是什么意思。 b)[10pts]举了一个有两个对象的例子,说明对分数背包问题使用的相同的贪婪方法(略加修改,如果贪婪方法选择的最后一个对象不适合,则忽略它)得到的解不到0/1背包问题最优解的1%。