暴力搜尋 POJ 1011 Sticks

2021-07-04 01:54:08 字數 661 閱讀 8022

首先這道題目有兩個非常重要的剪枝1、如果當前放的是木塊的第乙個那如果當前dfs不成立,那麼直接返回false因為每乙個木板必定屬於乙個塊,當他放第乙個的時候如果可以放其他的其實是已經固定了的了,如果當前不成立那麼不存在隊友可以和他一起站對。2、就是如果當前這個和前一次進行dfs的木板長度一樣,就跳過。

#include 

#include

#include

using

namespace

std;

const

int maxn = 64;

int n, sum, s[maxn+10], len, tot;

bool vis[maxn+10];

bool dfs(int _len, int up, int count)

else

if(_len + s[i] < len)

vis[i] = false;}}

return

false;

}int main()

sort(s, s+n);

for(len=s[n-1]; len<=sum; len++)

if(sum % len == 0)

}

}return

0;}

POJ 1011 經典搜尋

這道題 是 比較經典的 搜尋題。題意 給出一堆小木棍的長度,需要把它們拼成幾根相同的大棍子,求 這些大棍子的最短長度 分析 這道題主要使用,深度搜尋 遞迴,當然這裡用到多次剪枝,這對於減小時間複雜度很有效。include includeusing namespace std int stick 64...

POJ 1011 搜尋剪枝

題意 給一堆木棒,這些木棒是由幾根長度相同的長木棒厥斷而成的,求最短的長木棒長度能厥成這些短的木棒。題解 所求長度肯定介於最長木棒和木棒之和中間,並且可以整除木棒之和。於是窮舉所有可能的值,選中乙個值之後,用dfs給木棒尋找組合,能找到就輸出。直接dfs會超時,所以需要剪枝。可以先排序,這樣相同的木...

poj 1011 sticks(搜尋 剪枝)

題型 搜尋題 題意 此題堪稱最經典搜尋題。description 喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過50個長度單位。然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的...