多點兩兩連線問題

2021-09-14 03:55:35 字數 721 閱讀 7204

問題描述

問題分解

當有兩個點時:只有1-2連線的情況

當有四個點時:會有1-2、3-4與1-4、2-3連線的情況,不能出現1-3這種交叉連線的情況

當有六個點時:

問題分解到這裡,我們便能想到:這是乙個把複雜問題分解成子問題的需求,應用動態規劃即可,動態規劃的關鍵點在於找到子問題的解如何組合才能得到最終的結果

有了上述的思路,那接下來的分析便是要找到分解複雜問題的公式,分解到6個點的時候,可以得出乙個公式:f(6) = 2f(4)f(2) + f(2)*f(2) ,即:步驟3的分析

從f部推到出的公式顯然還不能得到解決,因為還不能用其解決8個、10個點的問題,那繼續分析8個點的場景:

至此,依據以上的判斷,可以總結出的規律為:

程式實現

#include uint32_t choicesofspotconnection(int spot_num) 

std::cout << "2*m: " << 2 * m << ", choices: " << choices[2 * m] << std::endl;

}return choices[spot_num];

}int main(int argc, char* ar**)

多邊形內部兩兩連線最多分出的區域數公式

尤拉定理 在任何乙個規則球面地圖上,用r rr記區域個 數,v vv記頂點個數 e ee記邊界個數 則r v e 2 r v e 2 r v e 2。r e v 2 r e v 2 r e v 2 已經存在n nn個點 n nn任意四個點可以有乙個交點cn4 c n 4 cn4 v n cn4 v ...

樹上兩兩匹配問題(max min)

哎,前幾天模擬考太多了,不是不想發部落格,是想法的太多了而又沒時間,還要訂題啊。這幾天遇著兩道這樣的樹上兩兩匹配問題,就是互相稍微變一下型,但我一道都沒寫出來。哎,真的感覺afo了,不過幸好的我目標不是省一。不過有時候還是要做一些兩手準備。斜眼笑 簡要題意 給出一棵n點的樹,k個匹配點,求這k個點兩...

兩兩交換兩個相鄰節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。如 給定1 2 3 4,返回2 1 4 3。說明 方法一 交換兩個節點裡的值而節點不動。該題禁止這樣做 方法二 老老實實的交換就好了 我的 if head null return head if head.next null return h...