棍子Sticks(poj 1011) 經典搜尋

2022-08-21 22:45:12 字數 1135 閱讀 2767

【題意描述】

george用相同的長度棍子,將他們隨機切成最多64個單位的長度,現在,他想回到原來的狀態,但他忘了他原來的多少根,以及他們原本是多長。請幫助他和設計乙個程式,計算最小的可能的原始長度。所有長度均大於零的整數。

【輸入】

輸入包含2行的塊。第一行:切成多少根,最多有64根。第二行切成的每一根的長度。檔案的最後一行包含零,表示結束。

【輸出】

輸出每行應包含原始棒的最小可能長度。

【輸入樣例】

9

5 2 1 5 2 1 5 2 1

41 2 3 4

0

【輸出樣例】

6

5附原始檔如下:

1 #include2 #include3 #include4

using

namespace

std;

5const

int max = 65;6

7int

n, len, stick[max];

8bool

flag, vis[max];910

bool cmp(int a, int b) //

排序從大到小的比較函式

1114

15void dfs(int dep, int now_len, int

u)16

27if(now_len ==len)

28

33for(int i = u; i < n; i ++)

34if(!vis[i] && now_len + stick[i] <=len)

3541}42

43int

main()

4456 sort(stick, stick + n, cmp); //

從大到小排序

5758

for(len = stick[0]; len < sum; len ++)

59if(sum % len == 0

)60

65 printf("

%d\n

", len);

66}

67return0;

68 }

喬治棍子演算法JAVA實現

喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過50個長度單位。然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的長度都用大於零的整數表示。package algorithm pu...

題解 Sticks 小木棍

uva luogu remotejudge需登uva luogu 加強版 每組資料給出n根小木棍,把它們拼接成若干根長度相等的木棍,求該長度的最小值。這題似乎就是暴搜加剪枝優化,不過剪枝比較複雜。先上 include using namespace std int a 100 v 100 n,len...

poj 1011 sticks(搜尋 剪枝)

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