Problem
給定 N 條邊,去除掉同構的情況,請問有多少個不同的串并連網路。
Sample Input
|
|
Sample Output
|
|
Solution
首先,拆分結果可以依序按照串-并-串-并 … 或者并-串-并-串 …
這樣會形成樹圖,其中奇數層是串/并,而偶數層是并/串,如此一來,要找到 N 個葉節點的樹有多少不同種的。根據兩種不同的分層方式,隨後乘上 2 就是答案。
定義 dp[i][j]
表示總共有 j 個葉節點的樹,並且每個子樹的葉節點最多 i 個 (至少)。這麼定義有它的好處,而不去直接定義 恰好 。
接著組合其具有 k 個樹-其子樹最多 i 個葉節點,剩下不足的葉節點,弄成一個樹,使用重複排列防止重複的計算。
|
|