揹包問題 c 回溯法求解揹包問題

2021-08-30 19:45:48 字數 682 閱讀 4761

給定n種物品和乙個揹包。物品i的重量是wi,其價值為pi,揹包的容量為c。應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大?

根據題目所給的資訊可知就是在wi共有5種物品,即n=5;揹包容量c=30;各物品的重量 wi[5]=;各物品的價值為: p[i]=;

所以所求揹包中的物品的價值最大就是 while(wi<=c) p=max.當wi>c,退出,並且輸出最大的價值p.

由於所給的資訊較多,所以考慮用類來進行封裝,這樣看起來比較有清晰而且有條理。

源**如下:

// knapsack-1.cpp: 定義控制台應用程式的入口點。

//#include "stdafx.h"

#includeusing namespace std;

class bag

;bag::bag()

bag::~bag()

void bag::set(int n)

void bag::input()

void bag::output()

} else

} }}

int main()

最後的結果為:77

截圖如下:

回溯法求解揹包個數問題

華電北風吹 天津大學認知計算與應用重點實驗室 2016 07 03 每個揹包最大容量20,有n個物品,問至少需要多少個揹包才能裝完所有的物品?輸入描述 第一行物品個數n,第二行n個整數,表示各個物品重量。物品個數小於等於10,物品重量小於等於10.解題思路 回溯法求解。不知道有沒有更好的思路。inc...

回溯法求解01揹包問題

在前面文章我們使用動態規劃求解了揹包問題,時間複雜度是o cn 當我們的c的值非常大的時候,說消耗的時間也是非常大的!接下來我們就使用回溯法來求解這個問題,其時間複雜度為o n2n 這個結果當我們的c的值是小於2n 的時候,該演算法所需的時間是小於動態規劃的!既然使用了回溯法,我們就的構造解析樹,因...

回溯法求解0 1揹包問題

include using namespace std struct dot void getvalue int weight,int value void calculate int weight,int value else while deep 6 else int main 選擇第1個 當前...