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

2021-08-04 22:08:13 字數 657 閱讀 3439

題目:

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

**:

#includeusing namespace std;

int l[30];

bool mark[30];

int n,sum,one;

bool cmp(int a,int b)

int flag=0;

void dfs(int onel,int num,int pos)

if(onel == 0)

for(int i=pos;i=l[i])}}

}int main()

one = sum/4;

sort(l,l+n,cmp);

if(l[0]>one||sum%4) cout<

計蒜客 正方形 dfs剪枝

要點 記得剪枝呀!當滿足條件時候設定flag true,當其他分支發現flag true時,結束該分枝。include include include include using namespace std int n int p 5 定義4個桶 int sum 0 int len int a 10...

計蒜客 正方形

蒜頭君手上有一些小木棍,它們長短不一,蒜頭君想用這些木棍拼出乙個正方形,並且每根木棍都要用到。例如,蒜頭君手上有長度為 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 的正方形。蒜頭君希望你提前告訴他能不...