0 1揹包列印路徑(遞迴和非遞迴版本)

2021-07-04 23:09:15 字數 541 閱讀 3817

簡單的0-1揹包列印路徑問題,我們可以記錄乙個p陣列來判斷,當前物品是否被選中,最後按照記錄輸出,注意是逆序。

#include#includeint main()  

j=m;

for(i=n;i>=1;i--)

if(p[i][j])

printf("sum:%d\n",s[m]);

} return 0;

}

接下來的遞迴版本,基本思想是一樣的,大家還是看**把。

遞迴版本

#include#include#includeusing namespace std;

#define max(x,y) (x>y? x:y)

int dp[13000],a[1000][1000],w[13000],f[10000],count=0;

void print(int n,int m)

}int main()

}count=0;

print(n,m);

for(i=0;i

uva 624 CD 0 1揹包列印路徑

include include include include using namespace std const int inf 1000000 define n 1000000 int dp 22 n int a 22 int n,t void printf path vector v,int ...

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...

簡單的揹包問題 非遞迴和遞迴

問題描述 從一堆物品中選出滿足特定要求的數個物品,求方案 從重量1 4 4 5 7的5個物品中選出數個,要求總重量為10 分析 略 遞迴演算法 int knap int w,int t,int n stack void init stack s int isempty stack s void pu...