• 大小: 3KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: C/C++
  • 标签:

资源简介

离散数学大作业-北京地铁站最短路径规划 以1号线、2号线和13号线为例,求任意两站之间的最短路线,并显示所需时间,路过的站点数,票价。

资源截图

代码片段和文件信息

#include “iostream“
#include “string“
using namespace std;
#define MaxInt 100000
int i;

int stanum;//所经站点数
static bool IsT(string *name string nam int n)
{
int i = 0;
while (i < n) {
if (name[i] == nam) {
return true;
}
i++;
}
return false;
}                                        //检查是不是节点

int Check(string *name string nam int n)
{
int i = 0;
while (i < n && name[i] != nam) {
i++;
}
return i;
}

void print(int *pa string *nam int v int i)//V表示是目地结点
{
if (pa[i] >= 0) {
print(pa nam v pa[i]);
cout << endl;
cout << stanum << “ “ << nam[pa[i]];
stanum = stanum + 1;
}
}

float Dijkstra(double *Map int *path int n int v int d)
{
float min ks;
int u t;
float *dist = new float[n];
int *s = new int[n];
for (int i = 0; i < n; i++)
{
dist[i] = Map[n * v + i];
s[i] = 0;
if (i != v && dist[i] < MaxInt) {
path[i] = v;
}
else
path[i] = -1;
}
s[v] = 1;
for (i = 0; i < n - 1; i++)
{
min = MaxInt;
u = v;
for (int j = 0; j < n; j++)
{
if (!s[j] && dist[j] < min) {
u = j;
min = dist[j];
}
}
s[u] = 1;
for (t = 0; t < n; t++)
{
if (!s[t] && dist[u] + Map[n * u + t] < dist[t]) {
dist[t] = dist[u] + Map[n * u + t];
path[t] = u;
}
}
}

ks = dist[d];//现在只返回人要的那个目的值
return ks;
delete dist;
}                             //Dijkstra算法内容

int main()
{
int n = 53;
double Map[53 * 53];
double *Ma = Map;//一维数组表示二维数组的内容
for (int i = 0; i < n * n; i++)
Map[i] = MaxInt;
string name[53];
string *nam = name;

int path[53];
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] = “大望路“;
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] = “大钟寺“;
name[40] = “知春路“;
name[41] = “五道口“;
name[42] = “上地“;
name[43] = “西二旗“;
name[44] = “龙泽“;
name[45] = “回龙观“;
name[46] = “霍营“;
name[47] = “立水桥“;
name[48] = “北苑“;
name[49] = “望京东“;
name[50] = “芍药居“;
name[51] = “光熙门“;
name[52] = “柳芳“;

for (i = 0; i < n; i++)
Map[n * i + i] = 0;
Map[n * 0 + 1] = 1.4;
Map[n * 1 + 0] = 1.4;
Map[n * 1 + 2] = 1.4;
Map[n * 2 + 1] = 1.4;
Map[n * 2 + 3] = 1.4;
Map[n * 3 + 2] = 1.4;
Map[n * 3 + 4] = 1.4;
Map[n * 4 + 3] = 1.4;
Map[n * 4 + 5] = 1.4;
Map[n * 5 + 4] = 1.4;
Map[n * 5 + 6] = 1.4;
Map[n * 6 + 5] = 1.4;
Map[n * 6 + 7] = 1.4;
Map[n * 7 + 6] = 1.4;
Map[n * 7 + 8] = 1.4;
Map[n * 8 + 7] = 1.4;
Map[n * 8 + 9] = 1.4;
Map[n

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1063  2018-01-10 15:02  离散大作业-地铁计费系统\LICENSE

     文件       6800  2018-01-10 15:02  离散大作业-地铁计费系统\main.cpp

     文件        309  2018-01-10 15:02  离散大作业-地铁计费系统\README.md

     目录          0  2018-01-10 15:02  离散大作业-地铁计费系统

----------- ---------  ---------- -----  ----

                 8172                    4


评论

共有 条评论