0 1揹包自頂向下非遞迴演算法

2021-10-02 03:04:42 字數 903 閱讀 4528

//0-1揹包動態演算法

//給出兩點地傑斯特拉演算法滿足動態規劃演算法的需求

// a 到 b c d e f h 已知學生家的距離,求老師家到每個學生家的最短路徑,好讓王老師做出計畫

// 寫出0-1揹包自頂向下的非遞迴動態規劃演算法

#include

#include

using

namespace std;

int n;

int*

input1()

return w;

}int

*input2()

intmin

(int a,

int b)

intmax

(int a,

int b)

//w[n] n件物品的重量;v[n] n個物品的權值 c是揹包容量

void

knap

(int

*v,int

*w,int c,

int n,

int*

*m) m[1]

[c]= m[2]

[c];

if(c >= w[1]

) m[1]

[c]=

max(m[2]

[c], m[2]

[c - w[1]

]+ v[1]

);}void

traceback

(int

**m,

int*w,

int c,

int n,

int*x)

} x[n]

=(m[n]

[c])?1

:0;}

intmain()

0 1揹包的遞迴與非遞迴實現

1 0 1揹包遞迴 2 include2 include 3 using namespace std 45 int w 物品重量陣列 6int v 物品價值陣列 7int contain 5 揹包容量 8int y 4 解向量,y i 1表示選取物品,y i 0表示不選取物品910 int f in...

揹包問題的非遞迴演算法

const int m 12 揹包重m斤 int subjects 物件陣列,重量 價值 int currentweight 0,currentvalue 0 當前重量,當前價值 int maxvalue 0 最優價值 for int i 0 i subjects.getupperbound 0 1...

01揹包 (遞迴解決)

01揹包,設定乙個揹包,他有乙個maxweight,現在你有n個物品,每個物品都有重量與其價值,現在要你求取得的最大價值。運用遞迴的思想,假如現在是從最後乙個開始選,如果這個東西的重量大於揹包的重量,那是不是可以從第n 1個物體開始選。假如這個東西的重量小於揹包的重量,那麼現在你將面臨兩個選擇,一不...