floyd演算法(求所有節點對的最短路徑):
首先考慮使用單源最短路徑演算法重複|v|次,這樣的複雜度會達到|v|^4,因為其中有很多重複的運算。
floyd演算法複雜度為|v|^3。
其維護乙個二維陣列q,q[i][j]表示i到j的最短路徑長度,如果不存在則為無窮大,若i==j則為0。
然後分別利用節點0、1、2、...n-1(n=|v|)來鬆弛所有邊。
比如最初使用節點0來鬆弛,即對於所有的i!=j,考察是否滿足q[i][j]>q[i][0]+q[0][j],如果成立,那麼就更新q[i][j]的值為q[i][0]+q[0][j]。
接下來使用節點1繼續上述操作。
每個節點迴圈一次,每次迴圈中要遍歷二維陣列q中的所有節點,所以總複雜度為o(|v|^3)。
**:
vectorint>> floyd(vectorint>>& matrix)//初始化二維陣列q
vectorint>> q(n,vector(n,10000
));
for(int i=0;ii)}}
for(int i=0;ii)
for(int i=0;ii)}}
return
move(q);
}
Floyd演算法(求每一對頂點之間的最短距離)
include include define ok 1 define error 1 define max vertex num 12 define network infinity 32767 typedef struct arccell adjmatrix max vertex num max ...
部落格294 求樹的根節點到葉子節點的所有路徑
內容 求樹的根節點到所有葉子節點的路徑 思路 1 遞迴思路,以葉子節點為結束條件 2 遞迴過程中,用vector記錄從根節點往下遍歷時的上層結果 給定乙個二叉樹,返回所有從根節點到葉子節點的路徑。definition for a binary tree node.struct treenode cl...
用遞迴演算法查詢父節點下的所有葉子節點
父節點 葉子節點 子節點一 葉子節點 葉子節點 子節點二 子節點三 葉子節點 葉子節點 如何得到父節點 採用遞迴演算法,碰到葉子節點就加到列表裡,不是葉子節點就對其進行迴圈再遞迴遍歷 向旗新增 實現將得到的目錄的所有子目錄和目錄本身變成id的list param 目錄id return 目錄與其所有...