題意
有n根棍子,分別有長度。問將其拼接成x根,長度相同,求最小長度。
解法搜尋。
1.因為總共n根棍子,最多拼接成n根相同長度, 並且,組成的棍子數量越多,則長度則越小
2.拼接的棍子數量必定能夠 被 \sum 整除
3.若當前棍子長度 stick_i 不能夠匹配, 在 stick_i = left_len 或者 stick_i = target_len 情況下, 此
長度無合法方案, 因為每一根棍子都將被使用,若有一根不能被使用,則此長度方案必定不能成立.
view code
#include#include#include
#include
using
namespace
std;
#define max(a,b) (a)>(b)?(a):(b)
int a[110
], n;
bool vis[110
];bool dfs( int use, int left, int
a )
return
false;}
int compare( int a, int
b )int
main()
sort( a, a+n, compare );
intans;
memset( vis,
0, sizeof
(vis));
for( int a = n; a > 0; a--)
} } }
return
0;
}
poj 1011 sticks(搜尋 剪枝)
題型 搜尋題 題意 此題堪稱最經典搜尋題。description 喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過50個長度單位。然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的...
POJ 1011 Sticks 解題報告
參考 其實是完全移植了 這裡的解題報告 感覺搜尋題做傷了。短期之內不會再做了。首先,sticks要從大到小排序。因為大的stick相對難找,一開始就確定好有利於更快地確定解。其次,記下當前正在匹配的stick,下次從這個stick之後開始試。再次,如果當前的stick和前乙個stick的長度一樣,而...
poj1011 Sticks 搜尋 剪枝
題目大意 george有一捆相同長度的木棍,但是他把這些木棍砍段了,現在想知道這些木棍原來長度是多少 即還原木棍 求可能的最小的原木棍長度。如下 include include include include includeusing namespace std int n,stick 64 use...