題目大意:george有一捆相同長度的木棍,但是他把這些木棍砍段了,現在想知道這些木棍原來長度是多少(即還原木棍),求可能的最小的原木棍長度。
**如下:
#include#include#include#include#includeusing namespace std;
int n,stick[64],use[64],len;
bool cmp(int a,int b)
bool dfs(int i,int l,int t)
else
}} return false;
}int main()
sort(stick,stick+n,cmp);(強大剪枝)
for(len=stick[0];len<=sum/2;len++)//如果棍子分不成兩根一樣長的就說明只有一根
{ if(sum%len==0)//(強大剪枝)棍子的長度肯定是總長度因數
{if(dfs(0,len,sum))//從頭開始匹配長度為len的棍子
{flag=true;
cout<
poj 1011 sticks(搜尋 剪枝)
題型 搜尋題 題意 此題堪稱最經典搜尋題。description 喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過50個長度單位。然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的...
暴力搜尋 POJ 1011 Sticks
首先這道題目有兩個非常重要的剪枝1 如果當前放的是木塊的第乙個那如果當前dfs不成立,那麼直接返回false因為每乙個木板必定屬於乙個塊,當他放第乙個的時候如果可以放其他的其實是已經固定了的了,如果當前不成立那麼不存在隊友可以和他一起站對。2 就是如果當前這個和前一次進行dfs的木板長度一樣,就跳過...
poj 1011 Sticks 減枝搜尋
題意 有n根棍子,分別有長度。問將其拼接成x根,長度相同,求最小長度。解法搜尋。1.因為總共n根棍子,最多拼接成n根相同長度,並且,組成的棍子數量越多,則長度則越小 2.拼接的棍子數量必定能夠 被 sum 整除 3.若當前棍子長度 stick i 不能夠匹配,在 stick i left len 或...