0 1揹包問題(蠻力法)

2021-10-10 08:07:20 字數 883 閱讀 6270

用蠻力法解決0/1揹包問題

例子輸入:

4 6

5 43 4

2 31 1

輸出:

10

6 8

#include

#include

using

namespace std;

intmain()

// int w[5]=,v[5]=;

int max=0;

//每輪最大價值

int max1=0;

//最終最大價值

int weight=0;

int weight1=0;

int count =0;

//可行方案的數量

for(

int i=

0;i<

pow(

(double)2

,(double

)n);i++

)//遍歷每一種情況

;//物品是否放進,1放進,0不放

int temp =i;

for(

int j=

0; j)// cout<<"第"(int i=

0;i)// cout(weight<=c)

if(weight<= c && max >max1)

max=0;

weight=0;

} cout << count << endl;

cout << weight1 <<

" "<< max1 << endl;

// cout <<"可行 "<< count << endl;

// cout}

蠻力法解決0 1揹包問題

使用蠻力法解決0 1揹包問題,就是將所有的物品裝入揹包的可能全部列舉出來。這個可以通過遞迴的方式實現。遞迴的過程可以看成是對一棵樹的深度優先遍歷 例如上圖,假設從揹包中的1號物品開始列舉所有的可能。如果每一層僅僅簡單的在迴圈中使用遞迴,則該程式就不會結束。需要使用乙個一維向量用於標記當前哪些編號已經...

蠻力法求解0 1揹包問題C

先佔坑 include include 以下三個庫用於計算程式運算時間 include include include using namespace std define n 100 struct goods int n,bestvalue,cv,cw,c 物品數量,價值最大,當前價值,當前重量,...

揹包問題 蠻力法,動態規劃

給定重量分別為,價值分別為的n件物品,和乙個承重為w的揹包。求這些物品中乙個最有價值的子集,並能裝到揹包中。揹包問題的蠻力解法是窮舉這些物品的所有子集,找出能夠裝到揹包中的所有子集,並在這些子集中找出價值最大的子集。揹包問題 蠻力法 include include define maxx 9999 ...