题目大意:
存在几个城市1~n;每个城市任意连向其他城市。并且,路程也是不尽相同的。若从一个城市出发,去各个城市,则去各个城市每一个城市的最短路程计算出来。
如下是几个城市的地图:
题目分析:一个城市可能有多个路径,但是寻找最小的路径却不容易。
算法:贪心算法:从1城市出发,到达4和5城市最小路径的充分必要条件是到达前面每一个城市都是最短路径——及贪心算法中局部最优解,构成全局最优解
数据结构:用map[][]这样的矩阵记录每个城市的路的大小。dist[]记录每个城市的最短路程。p[]记录前一个城市,这样就能找到全部路线。flag[]记录
每个城市是否找到最短的路程。免得重复查找。
1.初始化部分
void init(int map[][Max], int dist[], int p[], bool flag[])
{
cin >> n;
for (int i = 0; i <= n; i++)
{
p[i] = -1;
flag[i] = false; //当flag为假时,则还不为最短路程
dist[i] = Maxnum;
for (int j = 0; j <= n; j++)
{
map[i][j] = Maxnum;
}
}
//操作