hdu 1455 搜尋經典

2021-09-06 08:01:00 字數 719 閱讀 3520

講的大致是幾根原本長度相同的木棒,然後被某人當出氣筒剪啊剪啊,剪成好幾段,然後,好吧,這時間一長記性就差了,忘了原來這堆木棒的長度。。。orz,我這若菜,也只能幫您推算出原來這堆木棒的可能的最短長度了。。。

搜尋中的經典之經典,必須掌握啊。。。。

1 #include2 #include3 #include4

using

namespace

std;56

struct

stick;

10 stick sticks[64

];11

intn,num,sum;

1213

int cmp(const stick &s1,const stick &s2)

16//

len當前的長度,count當前長度為len的木棒的根數

17int dfs(int len,int l,int count,int

pos)else

if(len>(sticks[i].length+l))39}

40return0;

41}4243

intmain()

52 sort(sticks,sticks+n,cmp);

53for(int len=sticks[0].length;len<=sum;len++)60}

61}62return0;

63 }

HDU1455(dfs 各種剪枝)

題目大意 給你n個小樹枝,問你能夠將其拼成的s根相同長度的大樹枝,問這個長度最小為多少?解題思路 排序後dfs,記住一點的是如果第一根樹枝不能拼成想要到達的長度的話後面就不用看了,剪枝 ac 如下 include include include include include include inc...

HDU 1455 DFS 回溯 剪枝

先從1開始遍歷可能最小長度 dfs int ct,int len,int pos ct代表目前有的棍子總數,len代表目前這根棍子的長度,pos代表可以開始尋找棍子的位置。矛盾主要在每一根子棍子的長度上。如果這個子棍子的長度不合理,那麼要剪除所有這個長度的棍子的枝。這裡有三個剪枝條件。include...

hdu 1518 又一道搜尋經典

剛剛做過hdu 1455那道搜尋題,在來做這道,那就像切菜一樣。好吧,還是說一下大意吧。這次是為正方形了。就是所有的木棒從頭到尾相連,判斷能否組成乙個正方形。搜尋過程沒有像1455那題有那麼多的剪枝 orz,我是直接暴力的。還是上 吧。1 include2 include3 using namesp...