資源簡介
Dijkstra計算地鐵最短路徑,以天津地鐵為例
代碼片段和文件信息
#include?“iostream“
#include?“string“
using?namespace?std;
#define?MaxInt?100000
int?stanum;//所經(jīng)站點數(shù)
static?bool?IsT(string?*name?string?nam?int?n)//檢查是不是節(jié)點
{
int?i?=?0;
while?(i? if?(name[i]?==?nam)?{
return?true;
}
i?++;
}
return?false;
}
int?Check(string?*name?string?nam?int?n)
{
int?i?=?0;
while?(i? i?++;
}
return?i;
}
/*void?Creat_path(float?*Map?string?*name?int?n)
{
cout?<“請輸入要添加路徑的兩個結(jié)點的名稱:“;
string?name1?name2;
cin?>>?name1?>>?name2;
if?(name1?!=?“?“?&&?name2?!=?“?“)?{
int?i?j;
i?=?Check(name?“a“?n);
j?=?Check(name?“e“?n);
Map[n?*?i?+?j]?=?path;
Creat_path(Map?name?n);
}*/
void?print(int?*pa?string?*nam?int?v??int?i)//V表示是目地結(jié)點
{
if?(pa[i]?>=?0)?{
print(pa?nam?vpa[i]);
cout< cout?< stanum?=?stanum+1;
}
}
float?Dijkstra(double?*Map?int?*path?int?n?int?vint?d)
{
float?minks;
int?ut;
float?*dist?=?new?float[n];
int?*s?=?new?int?[n];
for(int?i?=?0;?i? {
dist[i]?=?Map[n?*?v?+?i];
s[i]?=?0;
if?(i?!=?v?&&?dist[i]? path[i]?=?v;
}
else
path[i]?=?-1;
}
s[v]?=?1;
for(i?=?0;?i? {
min?=?MaxInt;
u?=?v;
for(int?j?=?0;?j? {
if?(!s[j]?&&?dist[j]? u?=?j;
min?=?dist[j];
}
}
s[u]?=?1;
for(t?=?0;?t? {
if?(!s[t]?&&?dist[u]?+?Map[n?*?u?+?t]? dist[t]?=?dist[u]?+?Map[n?*?u?+?t];
path[t]?=?u;
}
}
}
ks?=?dist[d];//現(xiàn)在只返回人要的那個目的值
return?ks;
delete?dist;
}
void?main()
{
// cout?<“請輸入該圖的結(jié)點數(shù):“;
int?n?=?57;
// cin?>>?n;
double?Map[57*57];
double?*Ma?=?Map;//一維數(shù)組表示二維數(shù)組的內(nèi)容
for?(int?i?=?0;?i? Map[i]?=?MaxInt;
// cout?<“請依次輸入各結(jié)點的名稱!“?<‘\n‘;
string?name[57];
string?*nam?=?name;
int?path[57];
int?*pa=path;
name[0]?=?“劉園站“;
name[1]?=?“西橫堤“;
name[2]?=?“果酒廠“;
name[3]?=?“本溪路“;
name[4]?=?“勤儉道“;
name[5]?=?“洪湖里“;
name[6]?=?“西站“;
name[7]?=?“西北角“;
name[8]?=?“西南角“;
name[9]?=?“二緯路“;
name[10]?=?“海光寺“;
name[11]?=?“鞍山道“;
name[12]?=?“營口道“;
name[13]?=??“小白樓“;
name[14]?=?“下瓦房“;
name[15]?=?“南樓“;
name[16]?=?“土城“;
name[17]?=?“陳塘莊“;
name[18]?=?“復興站“;
name[19]?=?“華山里“;
name[20]?=?“財經(jīng)大學“;
name[21]?=?“雙林站“;
name[22]?=?“大卞莊“;
name[23]?=?“芥園西里“;
name[24]?=?“密云路“;
name[25]?=?“咸陽路“;
name[26]?=?“紅旗路“;
name[27]?=?“青年路“;
name[28]?=?“鼓樓“;
name[29]?=?“東南角“;
name[30]?=?“天津站“;
name[31]?=?“新開路“;
name[32]?=?“紅星路“;
name[33]?=?“靖江路“;
name[34]?=?“翠阜新村“;
name[35]?=?“天山路“;
name[36]?=?“南淀“;
name[37]?=?“合成洗滌劑廠“;
name[38]?=?“李明莊“;
name[39]?=?“化苑產(chǎn)業(yè)園區(qū)“;
name[40]?=?“天津工業(yè)大學“;
name[41]?=?“華苑站“;
name[42]?=?“王頂?shù)獭?
name[43]?=?“紅旗南路“;
name[44]?=?“水上公園“;
name[45]?=?“南開大學“;
name[46]?=?“西康路“;
name[47]?=?“和平路“;
name[48]?=?“華龍道“;
name[49]?=?“小樹林“;
name[50
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7929??2009-09-05?16:35??Dijkstra\Dijkstra.cpp
?????文件???????3425??2009-09-05?16:33??Dijkstra\Dijkstra.dsp
?????文件????????539??2009-09-05?17:00??Dijkstra\Dijkstra.dsw
?????文件??????50176??2009-09-05?17:06??Dijkstra\Dijkstra.ncb
?????文件??????53760??2009-09-05?17:06??Dijkstra\Dijkstra.opt
?????文件???????1256??2009-09-05?16:35??Dijkstra\Dijkstra.plg
?????文件????????529??2008-05-03?22:19??Dijkstra\Read?Me.txt
?????目錄??????????0??2009-11-26?22:13??Dijkstra\Debug
?????目錄??????????0??2009-09-05?17:06??Dijkstra
-----------?---------??----------?-----??----
???????????????117614????????????????????9
評論
共有 條評論