題目:
思路: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 #include6using
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旋轉溢位隱藏實現 在我們平常使用邊框的時候往往是乙個很窄的邊框,所以在視覺效果上邊框看似為直線,事實呢?給乙個小的盒子加乙個很寬的邊框,如下 可以明顯的看出其實並不是像想的那樣邊框是直線或者矩形。其實它是體型滴 下...