生活随笔
收集整理的這篇文章主要介紹了
C++——《算法分析》实验肆——单源最短路径问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實驗目的:
1、理解分支限界法的剪枝搜索策略;
2、 掌握分支限界法的算法柜架;
3、 掌握分支限界法的算法步驟;
4、 通過應用范例學習動態規劃算法的設計技巧與策略;
源程序:
#include <iostream>
#include<vector>
#include<queue>
using namespace std
;
typedef struct ArcCell
{int u
;int info
;ArcCell(int a
, int b
){u
= a
;info
= b
;}
}ArcCell
, AdjMaxtrix
[100][100];
typedef struct {int data
;int length
;
}VerType
;
typedef struct {VerType vexs
[100];vector
<ArcCell
>arcs
[1001];int vexnum
;int arcnum
;
}Graph
;
Graph G
;
queue
<int> q
;
int main()
{int m
, n
, t
;cout
<< "輸入頂點個數和弧邊個數:" << endl
;cin
>> G
.vexnum
>> G
.arcnum
;for (int i
= 1; i
<= G
.vexnum
; i
++){G
.vexs
[i
].data
= i
;G
.vexs
[i
].length
= 10000;}cout
<< "輸入弧及權重:" << endl
;for (int i
= 1; i
<= G
.arcnum
; i
++){cin
>> m
>> n
>> t
;G
.arcs
[m
].push_back({ n
,t
});}G
.vexs
[1].length
= 0;q
.push(G
.vexs
[1].data
);while (!q
.empty()){int t
= q
.front();for (int i
= 0; i
< G
.arcs
[t
].size(); i
++){int k
= G
.arcs
[t
][i
].u
;if (G
.vexs
[t
].length
+ G
.arcs
[t
][i
].info
<= G
.vexs
[k
].length
){G
.vexs
[k
].length
= G
.vexs
[t
].length
+ G
.arcs
[t
][i
].info
;q
.push(G
.vexs
[k
].data
);}}q
.pop();}for (int i
= 1; i
<= G
.vexnum
; i
++) cout
<< G
.vexs
[i
].data
<< "——" << G
.vexs
[i
].length
<< endl
;return 0;
}
實驗結果:
總結
以上是生活随笔為你收集整理的C++——《算法分析》实验肆——单源最短路径问题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。