計蒜客 等邊三角形 dfs

2022-08-19 13:39:08 字數 1045 閱讀 7988

題目:

思路:1.dfs(int a,int b,int c,int index)//a,b,c三條邊的邊長,index是陣列的下標

從dfs(0,0,0,0)開始,每次選的長度可能加到a,也可能b,也可能c,

三種可能分別dfs:

dfs(a+len[index+1],b,c,index+1);

dfs(a,b+len[index+1],c,index+1);

dfs(a,b,c+len[index+1],index+1);

2.剪枝

資料太大的邊直接結束遞迴,此題中因為是求等邊三角形,對於所有邊的和sum,除以三的值肯定是大於等於abc三條邊的。

3.提取重複的運算

一開始我sum沒有/3,而是在dfs裡面/3判斷,所以就tle了。

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;7//

計蒜客 等邊三角形

8int len[25

],n;

9bool

ok;10

intsum;

11void dfs(int a,int b,int c,int index)//

a,b,c三條邊的邊長,index是陣列的下標

1222

23if

(ok)

24return;25

2631}32

intmain()

3342 ok=false

;43 sum/=3

;44 dfs(0,0,0,0

);45

if(ok)

46 printf("

yes\n");

47else

48 printf("

no\n");

49}50return

0;

51 }

計蒜客 等邊三角形

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

等邊三角形

蒜頭君手上有一些小木棍,它們長短不一,蒜頭君想用這些木棍拼出乙個等邊三角形,並且每根木棍都要用到。例如,蒜頭君手上有長度為1,2,3,3的4根木棍,他可以讓長度為1,2的木棍組成一條邊,另外2跟分別組成2條邊,拼成乙個邊長為3的等邊三角形。蒜頭君希望你提前告訴他能不能拼出來,免得白費功夫。輸入格式 ...

CSS做等邊三角形

這裡我列舉的兩種方法 一種用邊框也就是border實現 比較簡單 另一種是用五個div旋轉溢位隱藏實現 在我們平常使用邊框的時候往往是乙個很窄的邊框,所以在視覺效果上邊框看似為直線,事實呢?給乙個小的盒子加乙個很寬的邊框,如下 可以明顯的看出其實並不是像想的那樣邊框是直線或者矩形。其實它是體型滴 下...