暴力列舉,dfs(三角形籬笆,HDU 4277)

2021-07-15 11:20:08 字數 899 閱讀 2446

講道理,真的有些莫名其妙,按理說dfs帶的引數少應該更快的,因為不用拷貝那麼多引數,直接修改全域性變數或傳遞指標。但事實上帶引數多反而快300ms,真的快很多了,時間限制1500ms,帶參1000ms,不帶參1300ms。好奇怪啊。。。難道是位址太遠,定址太慢?????

還有。。如果你的**是1500ms左右的話,過不過還是個概率問題,運氣好就過,運氣不好就不過。真是醉了。。

但是減少函式的呼叫還是能顯著加快速度的。

所以以後寫**還是盡量把細節寫好一點,也許真的不是你演算法出了問題,而是某些細節處理得不夠好了。

一開始超時,修改了一些細節就過了。

1、判斷是否ok不再單獨寫乙個函式,直接帶dfs內完成。

2、map改為set。

3、一開始還將a,b,c公升序排序後再判斷,事實上不是不是公升序直接丟棄就好了。

4、判重只需要乙個make_pair(a,b)就夠了,不需要帶上c。

5、一開始還寫了個結構體,簡直浪費時間。

6、把long long改為int,這個估計沒啥用。

n<=15,果斷就暴力列舉了o(3^n)。

**

#include#include#includeusing namespace std;

int fen[20];

int ans;

int n;

typedef pairpii;

sets;

void dfs(int cur,int a,int b,int c)

dfs(cur+1,a+fen[cur],b,c);

dfs(cur+1,a,b+fen[cur],c);

dfs(cur+1,a,b,c+fen[cur]);

}int main()

return 0;

}

符號三角形(dfs)

問題描述 如下圖是由14個 和14個 組成的符號三角形,2個同號下面都是 2個異號下面都是 在一般情況下,符號三角形的第一行有n個符號,符號三角形問題要求對於給定的n,計算有多少個不同的符號三角形,使其所含的 和 的個數相同。解題思路 1 不斷改變第一行每個符號,搜尋符合條件的解,可以使用遞迴回溯 ...

列舉。木棒三角形

小a家裡有很多長度不一樣的木棍,有一天他很無聊,便擺弄這些木棒來解悶。小a的數學學得很好,所以他想在這些木棒中挑出3根來組成乙個三角形,當然他有可能有很多鍾選法,所以他還是想挑出乙個面積最大的。輸入 輸入有很多組,每組輸入包括兩行,第一行輸入乙個n 0 n 100 表示小a有n根木棍,接著一行有n個...

1三角形 暴力,規律

題目描述 有n根棍子,棍子的長度為a,想要從中選出3根棍子組成周長盡可能長的三角形 約束條件 3 n 100 1 ai 10 6 法一 暴力求解 做任何題首先想到的方法,因為三重迴圈,所以複雜度為n的3次方,因為n小於100,所以方法可行 複雜度為nlogn include include incl...