资源简介
迪杰斯特拉算法有详细的试验报告 可以动态演示,已通过课程设计,资源特别棒 下载不后悔
代码片段和文件信息
#include
#include
#include
#include//导入要用的包
#define n 5 //定义节点数为5
#define Max 1000//将最大值Max设为1000
int cost[n][n];//建立一个存储权值的二维数组
int path[n];//存储路径的数组
void graph()
{
initgraph(700610);
setbkcolor(LIGHTGRAY);
cleardevice();
setcolor(BLUE);
circle(35015050);
circle(15025050);
circle(25055050);
circle(55045050);
circle(55025050);
line(350150150250);
line(150250250550);
line(250550550450);
line(550450550250);
line(550250350150);
line(350150550450);
line(250550550250);
outtextxy(250200_T(“10“));
outtextxy(200400_T(“50“));
outtextxy(400500_T(“20“));
outtextxy(550350_T(“60“));
outtextxy(450200_T(“100“));
outtextxy(450300_T(“30“));
outtextxy(400400_T(“10“));
outtextxy(350150_T(“0“));
outtextxy(150250_T(“1“));
outtextxy(250550_T(“2“));
outtextxy(550450_T(“3“));
outtextxy(550250_T(“4“));
}//绘制一个图,并标出权值和节点名称
void Draw(int path[]int m[])//通过最短路径绘图函数
{
setcolor(RED);//连线用红色线
for(int i=0;i {
int a=m[i];//将j的值赋给a
int s1=a*10+path[a];//通过此公式表示将要连线的两个节点
Sleep(1500);//延时1500ms
switch(s1)
{
case 01:case 10:line(350150150250); break; //如果s1=01||10,连接0-1
case 04:case 40:line(550250350150);break; //如果s1=04||40,连接0-4
case 03:case 30:line(350150550450);break; //如果s1=03||30,连接0-3
case 12:case 21:line(150250250550); break; //如果s1=21||12,连接1-2
case 23:case 32:line(250550550450); break; //如果s1=23||32,连接2-3
case 42:case 24:line(250550550250); break; //如果s1=24||42,连接2-4
case 34:case 43:line(550450550250); break; //如果s1=34||43,连接3-4
default:break;
}
}
}
void shortpath(int v)
{
int ijkwmtemp;
int path[n];
int m[n];
int dist[n];
int s[n];
for(i=0;i {
dist[i]=cost[v][i];//将原点到其它节点直接相连的权值赋给dist[]
if(dist[i]!=Max)//表示原点与节点i有直接连线
{
path[i]=v;//i的前一个节点为v
}
else
{
path[i]=-1;//否则i之间没有节点
}
s[i]=0;//表示i没有找到最短路径
}
s[v]=1;//原点已经找到最短路径
dist[v]=0;//将原点排除在外
for(k=0;k {
wm=Max;
for(i=0;i {
if(!s[i]&&dist[i] {
j=i;
wm=dist[i];
}
}
s[j]=1;//表示节点j已经找到最短路径
m[k]=j;//将j的值赋给m[k]
for(i=0;i {
if(!s[i]&&dist[j]+cost[j][i] {
dist[i]=dist[j]+cost[j][i];
path[i]=j;//如果有,刷新为新的路径,并表示i的前一个节点为j
}
}
}
for(i=0;i {
int a=1;
cout< cout< cout<<“路径:“< temp=path[i];
while(temp!=-1)
{
cout<<“<——“<
temp=path[temp];
}
cout< }
getch();
graph();
Draw(pathm);
getch();
}
int main()
{
int v;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 278598 2013-12-11 10:13 迪杰斯特拉\Debug\3.exe
文件 400284 2013-12-11 10:13 迪杰斯特拉\Debug\3.ilk
文件 12146 2013-12-11 10:13 迪杰斯特拉\Debug\3.obj
文件 640000 2013-12-11 10:13 迪杰斯特拉\Debug\3.pdb
文件 352329 2013-12-13 19:58 迪杰斯特拉\Debug\Cpp1.exe
文件 580400 2013-12-13 19:58 迪杰斯特拉\Debug\Cpp1.ilk
文件 23818 2013-12-13 19:58 迪杰斯特拉\Debug\Cpp1.obj
文件 697344 2013-12-13 19:58 迪杰斯特拉\Debug\Cpp1.pdb
文件 184393 2013-12-12 21:36 迪杰斯特拉\Debug\Cpp2.exe
文件 185476 2013-12-12 21:36 迪杰斯特拉\Debug\Cpp2.ilk
文件 7881 2013-12-12 21:36 迪杰斯特拉\Debug\Cpp2.obj
文件 476160 2013-12-12 21:29 迪杰斯特拉\Debug\Cpp2.pdb
文件 25600 2013-12-11 23:54 迪杰斯特拉\Debug\dj.pdb
文件 352330 2013-12-15 20:36 迪杰斯特拉\Debug\graph.exe
文件 580400 2013-12-15 20:36 迪杰斯特拉\Debug\graph.ilk
文件 23810 2013-12-15 20:36 迪杰斯特拉\Debug\graph.obj
文件 697344 2013-12-15 20:36 迪杰斯特拉\Debug\graph.pdb
文件 307275 2013-12-15 22:40 迪杰斯特拉\Debug\Text14.exe
文件 520284 2013-12-15 22:40 迪杰斯特拉\Debug\Text14.ilk
文件 23280 2013-12-15 22:40 迪杰斯特拉\Debug\Text14.obj
文件 705536 2013-12-15 20:43 迪杰斯特拉\Debug\Text14.pdb
文件 246784 2014-01-07 21:09 迪杰斯特拉\Debug\vc60.idb
文件 151552 2013-12-18 21:26 迪杰斯特拉\Debug\vc60.pdb
文件 303183 2014-01-07 21:09 迪杰斯特拉\Debug\迪杰斯特拉.exe
文件 497228 2014-01-07 21:09 迪杰斯特拉\Debug\迪杰斯特拉.ilk
文件 23465 2014-01-07 21:09 迪杰斯特拉\Debug\迪杰斯特拉.obj
文件 713728 2013-12-18 21:26 迪杰斯特拉\Debug\迪杰斯特拉.pdb
文件 35328 2013-12-15 16:49 迪杰斯特拉\数据结构报告\[0]封面.doc
文件 20480 2013-12-16 20:53 迪杰斯特拉\数据结构报告\[1]目录.doc
文件 261632 2014-06-10 21:23 迪杰斯特拉\数据结构报告\[2]报告正文.doc
............此处省略13个文件信息
- 上一篇:模电实验报告
- 下一篇:qt 使用 echarts图表
评论
共有 条评论