滿揹包與dfs比較

2021-07-29 23:49:25 字數 1398 閱讀 2705

題目描述:

第七題 

小y 有乙個寬度為 100cm,高度為 20cm,深度為 1cm 的櫃子,如下圖。 

小y 還有 3636 個禮物盒,他們的深度都為 1cm。 

他們對應的寬度和高度如下,單位(cm)。 

現在小y 想把這些盒子放到櫃子上,由於禮物盒裡面都裝有禮物,禮物盒必須向上放置,並且不能堆放。由於禮物盒深度和櫃子深度一樣,所以禮物盒和櫃子深度方向也必須一致。並且禮物盒的高度還不能大於櫃子的高度,否者放不進去。小y 希望放到櫃子上禮物盒的寬度和正好等於櫃子的寬度,也就是希望櫃子兩邊都不存在間隙。如下圖符合條件的放置。 

滿足條件的情況下,小y 希望能盡可能多的放置禮物盒,算出最多能放多少個禮物盒。

#include#includeusing namespace std;

#includeint a[100],b[100],ans=-1;

void dfs(int cur,int s,int k)

dfs(cur+1,s,k);

dfs(cur+1,s+a[cur+1],k+1);

}int main()

//執行結果:18 161603

#include#include#includeusing namespace std;

int a[100],b[100],ans=-1;

void dfs(int cur,int s,int k)

for(int i=cur+1;i<=35;i++)

dfs(i,s+a[cur+1],k+1);

}int main()

//執行結果: 18 47772

//裝滿的01揹包

#include#include#include#includeusing namespace std;

int main()

//結果:18 0

11811

16126

1017106

52194

75515

315119

179410

1217

1920

1110

203

DFS寫揹包問題

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

深度優先搜尋(dfs)與揹包問題

深度優先搜尋實質就是列舉,因此演算法的複雜度可能比較大。揹包問題是經典的動態規劃問題,掌握遞推公式就可以快速求解,但在不知道遞推公式的情況下,使用深度優先搜尋也是一種可行的辦法。本部落格不推薦使用深度優先搜尋去解決01揹包問題,但有助於讀者進一步理解dfs。使用深度優先搜尋解決01揹包問題 incl...

DFS解決01揹包問題

本篇博文著重用dfs解決著名的揹包問題 01揹包問題要點在 選與不選。所以我們很容易聯想到dfs來解決這個問題!下面我們來看看是如何實現的 includeusing namespace std const int n 30 int w n value n n,maxvalue 0,v void df...