計蒜客 正方形 dfs剪枝

2021-10-07 12:00:53 字數 903 閱讀 4213

要點:

記得剪枝呀!!!當滿足條件時候設定flag = true, 當其他分支發現flag = true時,結束該分枝。

#include

#include

#include

#include

using

namespace std;

int n;

int p[5]

;//定義4個桶

int sum =0;

int len;

int a[

10010];

int t;

bool flag =

false

;bool

cmp(

int a,

int b)

void

dfs(

int index)

if(index==n+

1&&p[1]

==p[2]

&&p[2]

==p[3]

&&p[3]

==p[4]

)//木棍扔第1個桶

if(p[1]

+a[index]

<=len)

//木棍扔第2個桶

if(p[2]

+a[index]

<=len)

//木棍扔第3個桶

if(p[3]

+a[index]

<=len)

//木棍扔第4個桶

if(p[4]

+a[index]

<=len)

}int

main()

if(sum%4!=

0)else

else

}return0;

}

計蒜客 正方形

蒜頭君手上有一些小木棍,它們長短不一,蒜頭君想用這些木棍拼出乙個正方形,並且每根木棍都要用到。例如,蒜頭君手上有長度為 11,2 2,33,3 3,3 3 的 5 5 根木棍,他可以讓長度為11,2 2 的木棍組成一條邊,另外三根分別組成 3 3 條邊,拼成乙個邊長為 3 3 的正方形。蒜頭君希望你...

計蒜客 正方形 難

蒜頭君手上有一些小木棍,它們長短不一,蒜頭君想用這些木棍拼出乙個正方形,並且每根木棍都要用到。例如,蒜頭君手上有長度為 11,22,33,33,33 的 55 根木棍,他可以讓長度為11,22 的木棍組成一條邊,另外三根分別組成 33 條邊,拼成乙個邊長為 33 的正方形。蒜頭君希望你提前告訴他能不...

計蒜客 正方形 (dfs好題,具有參考價值)

題目 題目思路 先將木棍長度陣列降序排序,dfs前先判斷一下是否符合題意,然後進行dfs,dfs出結果就退出,需要剪枝的地方,dfs 用乙個引數記錄上一次搜尋的位置在 下一次搜尋只會在這條邊之後。搜尋完一條邊後pos再置為0。includeusing namespace std int l 30 b...