ZCMU 1711 揹包 (dfs演算法入門)

2021-08-21 17:18:59 字數 791 閱讀 4642

time limit: 1 sec  memory limit: 128 mb

submit: 182  solved: 98

[submit][status][web board]

你有乙個神奇的揹包,他的容積是m(0第一行 n,m

第二行 n個數字

輸出方案數

3 40

20 20 20

題目大意:給乙個容量為m的揹包和n件物品,每件物品的重量為a[ i ],求有多少種裝滿揹包的方案。 

想法:用dfs演算法即可。

dfs模板:

void dfs(int step)  

}

完整**:

#include using namespace std;

int n, m, a[30], ans = 0;

void dfs(int ok, int k)//ok代表本層結果,k就是陣列的index 下標而已。

if (ok<0 || k>n)//如果要裝進去的東西太多了或者所有東西都裝進去了(本題必須要裝滿才能拿),都不滿足

return;

dfs(ok - a[k], k + 1);//放進乙個a[k]的東西

dfs(ok, k + 1);//繼續推進,進入下一層遞迴

return;}

int main()

return 0;

}

參考資料:

ZCMU1711揹包(dfs入門題)

你有乙個神奇的揹包,他的容積是m 0第一行 n,m 第二行 n個數字 輸出方案數 3 40 20 20 20 先將一下題意吧 乙個固定容積的揹包,然後給你n個物品,他們各自都有自己的容積,用這些物品去裝揹包,乙個前提條件就是一定要將揹包裝滿,不裝滿肯定不行,裝滿一次計數一次,大概就是這個意思了。剛剛...

zcmu 1261 採藥(01揹包)

time limit 1 sec memory limit 128 mb submit 320 solved 159 submit status web board 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。...

DFS寫揹包問題

dfs解決揹包問題 include 用深搜寫 using namespace std int weight,maxvalue 0,n 揹包中能放物品的總質量weight,最大價值maxvalue,總的物品數量 int v 30 w 30 物品的數量和價值 void dfs int index,int...