校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息Word格式.doc
《校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息Word格式.doc》由会员分享,可在线阅读,更多相关《校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息Word格式.doc(4页珍藏版)》请在冰豆网上搜索。
//景点
voidfloyd(graph&
t,constintn);
voidpicture();
voidcreatp(graph&
t);
voidbfs(grapht);
};
voidgraph:
:
picture()
cout<
<
"
******校园导游图******"
endl;
以下是学校的景点"
***************************"
*
1.校园门口
2.图书管
*"
3.饭堂
4.教学楼
以下是学校的路径图"
3"
1*---------*2
"
|
/|"
/|"
/
|"
4|
9/
|5
|/
3*---------*4
2"
下面是景点与景点之间的距离和介绍:
;
1.校园门口--》2.图书管
距离为:
1.校园门口--》3.饭堂
4"
2.图书管
--》4.教学楼
--》3.饭堂
9"
3.饭堂
5"
//校园图
}
creatp(graph&
t)
inti,j;
for(i=1;
i<
=n;
i++)
for(j=1;
j<
j++)
if(i==j)t.arcs[i][j]=0;
//景点一样则距离为0
elset.arcs[i][j]=max;
//i不等于j时
t.arcs[1][2]=3;
t.arcs[2][1]=3;
t.arcs[2][4]=5;
t.arcs[4][2]=5;
t.arcs[3][1]=4;
t.arcs[1][3]=4;
t.arcs[3][2]=9;
t.arcs[2][3]=9;
t.arcs[3][4]=2;
t.arcs[4][3]=2
//把景点跟距离用一个二围数组存储下来
floyd(graph&
t,constintn)
for(inti=1;
for(intj=1;
t.a[i][j]=t.arcs[i][j];
//把距离付值给a.[i][j]
if((i!
=j)&
&
(a[i][j]<
max))
t.path[i][j]=i;
elset.path[i][j]=0;
for(intk=1;
k<
k++)
if(t.a[i][k]+t.a[k][j]<
t.a[i][j])
t.a[i][j]=t.a[i][k]+t.a[k][j];
t.path[i][j]=t.path[k][j];
bfs(grapht)
//从顶点i出发实现广度搜索搜索n
intj,i;
//f,r分别为队列头,尾指针
charch;
请输入一个你想去的地方:
cin>
>
i;
while(i<
=4)
//cout<
t.arcs;
//输出访问点
//for(i;
if(i==1)cout<
这里就是你要去的地方拉!
!
endl<
else
if(i!
=j)
距离为"
t.a[i][j]<
intnext=t.path[i][j];
j;
while(next!
=i)
--"
next;
next=t.path[i][next];
等我推荐一条最佳路径供你返回吧(y/n):
ch;
if(ch=='
y'
)
if(i==2)cout<
2--4--3--1"
if(i==3)cout<
3--2--1或者3--4--2--1"
if(i==4)cout<
如果你想去四景点我们会带你游览学校全景:
1--2--4--3--1"
cout<
你还想去别的地方吗?
(y/n)"
cin>
if(ch=='
){cout<
if(ch!
='
)
*****退出程序*****"
欢迎下次再来"
break;
break;
voidmain()
grapht;
t.picture();
t.creatp(t);
t.floyd(t,n);
t.bfs(t);