用floyd演算法求解下圖各個頂點的最短距離。
//最大容量
#define vertextype int 頂點型別
#define inf 65535
//象徵無窮大
typedef
struct graph
;//鄰接矩陣
int p[num]
[num]
;//前驅表
int vexnum,arcnum;
//vernum為頂點個數,arcnum為邊數
} graph;
//初始化圖
void
createg
(graph &g)
//flod演算法
void
floyd
(graph &g)}}
}//輸出距離矩陣
for(
int i =
1; i <= g.vexnum;
++i)
printf
("\n");
}}intmain()
三重f
or迴圈
導致時間
複雜度為
o(n3
)三重for迴圈導致時間複雜度為o(n^3)
三重for循
環導致時
間複雜度
為o(n
3)
(學習2)Floyd和Dijkstra演算法
floyd演算法 演算法解析 因為一張連通圖中不是所有點到其他點都是有一條直接路徑的,所以我們可以借助別的和終點相連的點到達終點,便是起點 中轉.終點 以小推大,小 假設當前只有1可以當中轉點,start為起點,end為終點 因此當start點需要借助點1到end點時,便需要進行if edge st...
演算法分析與實踐 作業5
在包含有n個點的集合s中,找出距離最近的兩個點。設 p1 x1,y1 p2 x2,y2 pn xn,yn 是平面的n個點。嚴格地講,最近點對可能不止一對,此例輸出一對即可。利用分治求解 首先對所有的點按照x座標 或者y 從小到大排序 排序方法時間複雜度o nlogn o nlogn o nlogn ...
演算法分析與實踐 大作業
給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的原序列。一般而言我們會想到這種做法 但是這種只是其中一種,我們並沒有考慮完全,還有一些如 小球本來可以放到兩個大球的中間,不增加長度的 這個就類似於最短路的問題,由此我們想到了回溯演算法。開始時設a r1,r2,rn ...