【題意描述】
george用相同的長度棍子,將他們隨機切成最多64個單位的長度,現在,他想回到原來的狀態,但他忘了他原來的多少根,以及他們原本是多長。請幫助他和設計乙個程式,計算最小的可能的原始長度。所有長度均大於零的整數。
【輸入】
輸入包含2行的塊。第一行:切成多少根,最多有64根。第二行切成的每一根的長度。檔案的最後一行包含零,表示結束。
【輸出】
輸出每行應包含原始棒的最小可能長度。
【輸入樣例】
9【輸出樣例】5 2 1 5 2 1 5 2 1
41 2 3 4
0
65附原始檔如下:
1 #include2 #include3 #include4using
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個長度單位。然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的...