C 超級書架(深度優先搜尋)

2021-10-04 22:26:32 字數 988 閱讀 9598

farmer john 最近為奶牛們的圖書館添置了乙個巨大的書架,儘管它是如此的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留有一點空間。 所有 )n(1≤n≤20) 頭奶牛都有乙個確定的身高 hi (1≤hi≤1,000,000)。設所有奶牛身高的和為 s。書架的高度為 b,並且保證 1≤b≤s。 為了夠到比最高的那頭奶牛還要高的書架頂,奶牛們不得不象演雜技一般,一頭站在另一頭的背上,疊成一座「奶牛塔」。當然,這個塔的高度,就是塔中所有奶牛的身高之和。為了往書架頂上放東西,所有奶牛的身高和必須不小於書架的高度。 塔疊得越高便越不穩定,於是奶牛們希望找到一種方案,使得疊出的塔在高度不小於書架高度的情況下,高度盡可能小。你也可以猜到你的任務了:寫乙個程式,計算奶牛們疊成的塔在滿足要求的情況下,最少要比書架高多少。

輸入格式

第 1 行: 2 個用空格隔開的整數:n 和 b。

第 2.n+1 行: 第 i+1 行是 11 個整數:h_ihi。

輸出格式

輸出 1 個非負整數,即奶牛們疊成的塔最少比書架高的高度。

輸出時每行末尾的多餘空格,不影響答案正確性

要求使用「檔案輸入輸出」的方式解題,輸入檔案為 shelf.in,輸出檔案為 shelf.out

樣例輸入

5 1631

356樣例輸出

1本題可用01揹包來做,也可用深度優先搜尋,這裡用深度優先搜尋:

用 dfs 列舉所有的可能,求出超過書架的最小距離。

#include

#include

#include

using

namespace std;

int n,b,h[22]

,sum[22]

,ans=

1e7;

void

dfs(

int x,

int dep,

int num)

intmain()

希望大家多多點贊哦~~

DFS(深度優先搜尋) (C )

1 演算法用途 用於遍歷圖中的節點,有些類似於樹的深度優先遍歷。這裡唯一的問題是,與樹不同,圖形可能包含迴圈,因此我們可能會再次來到同一節點。2 基本思想 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷 直至圖中和v有路徑相通的頂...

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...

廣度優先搜尋,深度優先搜尋

深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...