前天在《程式設計之美》中讀到乙個「一摞烙餅排序」的問題,第一眼不會做,看了答案之後倒是讓我明白了一年多之前不真正理解的剪枝搜尋的內涵。記錄一下,作為分享和溫習之地。
void cprefixsorting::search(int *pcakesarray, int step)
if (issorted(pcakesarray) && step < reversescount)
cout << endl;
return;
}for (int i = 1; i < cakescount; ++i)
reverse(cakesarraytmp, 0, i);
curcakesarrayreverse[step] = i;
search(cakesarraytmp, step + 1);
if (cakesarraytmp)}}
搜尋(1) 剪枝
要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 最下一層的下底面除外 的面積q最小。令q s 請程式設計對給出的n和...
搜尋剪枝DFS
tempter of the bone hdu1010 題意 給乙個圖,找出乙個看能否能在t的時間內從s到達d點 思路 bfs肯定不行,因為bfs找到的是最短時間的路徑,無法對在t時間點到達d點進行判斷 於是才想到了dfs,這個能把所有的情況遍歷一遍的演算法,雖然圖的長寬只有7,但是總是超時,這次終...
DFS搜尋 剪枝
hdu 5952 題意 給出一張無向圖,然後判斷這張圖中一共有多少個不同的大小為s的完全圖 完全圖的頂點數為s個 題目保證每個點的度不大於20。完全圖 n個點兩兩之間都有一條邊的圖叫完全圖。思路 由於頂點個數很少,而且每個點的度數最多是20,所以可以暴力優化,建圖,對於每個s點完全子圖,如果i點在子...