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

2021-06-07 09:52:03 字數 503 閱讀 7236

問題描述:從一堆物品中選出滿足特定要求的數個物品,求方案

從重量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 push(stack* s, int x)

void pop(stack *s, int *x)

else }

int knap(int w, int t, int n)

k++;

} if(t==0)

; int n=5;

int t = 13;

knap(w,t,n);

return 0;

}

結果:遞迴演算法可以輸出乙個解

非遞迴可以輸出所有解

簡單揹包問題 遞迴非遞迴實現

include define max 100 int w max int ans int s,int m if b return 0 else int ans int s,int m stacknode stacknode stack max int i,j,t,top,nofail t 0 top...

揹包問題的遞迴和非遞迴的解法

cpp view plain copy 簡單揹包問題 問題定義 有乙個揹包重量是s,有n件物品,重量分別是w0,w1.wn 1 問能否從這n件物品中選擇若干件放入揹包中使其重量之和正好為s include include include include using namespace std con...

05 3 遞迴與非遞迴 棧的應用 簡單揹包問題

def fact n if n 0 return 1 else return n fact n 1 if name main print fact 3 6假定需要計算fact 3 其執行中將呼叫fact 2 進而呼叫fact 1 及fact 0 計算過程中程式執行棧的變化情況,各小圖中標著n一列的格...