poj 1011 Sticks 減枝搜尋

2022-05-13 20:49:36 字數 840 閱讀 3495

題意

有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...