求一組整數對形成的樹的最長路徑

2021-07-23 05:55:50 字數 795 閱讀 8973

/**

程式實現功能:輸入一組整數對,分別為父節點和子節點   如(0,1) (0,2) (1,3) (1,4) (3,5) (3,6) ,求形成的數的最長路徑,本例中 levels=4

實現方法:如果整數對集合中第二個數沒有在第乙個數組成的set中出現,說明該數為葉子節點,依次刪掉葉子節點,不斷將上一層根節點變成新的葉子節點,直到整數對為空集,所得層數加1即為最長路徑(加1是最後一次去掉了兩層的結點 eg,0->1)

**/

#include #include #include using namespace std;

int level(vector> &vec)

levels++; ///層數 levels++

root.clear();

for(vector>::iterator it=vec.begin();it!=vec.end();it++) ///剩下的整數對重新提取根節點(其實可以用差集運算減少運算量)

root.insert(it->first);

length=vec.size();

}return levels+1; ///最後層數需要加1,演算法實現到根節點時,一次性刪除了兩個結點

求一組整數的第k小的數

題目 求一組整數的第k小的數 輸入 5 2 10 60 4 2 7 輸出 4 解題思路 1 使用快速排序的思路解題。2 與快排不同的是,快排會在排序結束才會結束。此題也是從小到大排序,但是,只要找到第k小的數,就跳出遞迴。3 此題有一些小地方可以優化容易忽略,比如判斷k是否會大於n,判斷用i和j掃瞄...

對一組整數進行操作 使用vector容器的方法

讀入一組整數並把它們存入乙個vector物件,對其進行以下操作,並輸出結果。include include using namespace std intmain 每對相鄰整數的和輸出出來 for decltype number.size ix 0 ix number.size ix ix 2 co...

求一組數的所有組合。

例如1 2 3的所有組合數,有1 2 3 12 13 23 123共7中。演算法思路 n個數能夠構成長度為1的組合 長度為2的組合 長度為n的組合。在求n個數的長度為m m 1 m n 的組合時,我們把這n個數分成兩部分 第乙個數和其餘的所有數。如果組合裡包含第乙個數,則下一步在剩餘的數中選取m 1...