学校导游系统(图的应用另一版本)
来源:互联网 发布:js引用js文件 编辑:程序博客网 时间:2024/04/27 17:45
#include<iostream.h>
const int n=4; //n表示校园图中顶点个数
const int e=5; //e表示校园图中路径
bool visited[n+1];
#define max 32767
class graph
{
public:
int arcs[n+1][n+1]; //领结矩阵
int a[n+1][n+1]; //距离
int path[n+1][n+1]; //景点
void floyd(graph &t,const int n);
void picture();
void creatp(graph &t);
void bfs(graph t);
};
void graph::picture()
{
cout<<" ******校园导游图******"<<endl;
cout<<"以下是学校的景点"<<endl;
cout<<" ***************************"<<endl;
cout<<" * 1.校园门口 2.图书管 *"<<endl;
cout<<" * *"<<endl;
cout<<" * 3.饭堂 4.教学楼 *"<<endl;
cout<<" ***************************"<<endl;
cout<<"以下是学校的路径图"<<endl;
cout<<" 3"<<endl;
cout<<" 1 *---------* 2 "<<endl;
cout<<" | /| "<<endl;
cout<<" | / | "<<endl;
cout<<" | / | "<<endl;
cout<<" 4 | 9/ | 5 "<<endl;
cout<<" | / | "<<endl;
cout<<" | / | "<<endl;
cout<<" | / | "<<endl;
cout<<" | / | "<<endl;
cout<<" 3 *---------* 4 "<<endl;
cout<<" 2"<<endl;
cout<<"下面是景点与景点之间的距离和介绍:";
cout<<"1.校园门口 --》2.图书管 距离为:3"<<endl;
cout<<"1.校园门口 --》3.饭堂 距离为:4"<<endl;
cout<<"2.图书管 --》4.教学楼 距离为:4"<<endl;
cout<<"2.图书管 --》3.饭堂 距离为:9"<<endl;
cout<<"3.饭堂 --》4.教学楼 距离为:5"<<endl;
//校园图
}
void graph::creatp(graph &t)
{
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)t.arcs[i][j]=0; //景点一样则距离为0
else t.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;
//把景点跟距离用一个二围数组存储下来
}
void graph::floyd(graph &t,const int n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
t.a[i][j]=t.arcs[i][j]; //把距离付值给a.[i][j]
if((i!=j)&&(a[i][j]<max))
t.path[i][j]=i;
else t.path[i][j]=0;
}
for(int k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++)
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];
}
}
}
void graph::bfs(graph t) //从顶点i出发实现广度搜索搜索n
{
int j,i; //f,r分别为队列头,尾指针
char ch;
cout<<"请输入一个你想去的地方:";
cin>>i;
while(i<=4)
{
//cout<<t.arcs;//输出访问点
//for(i;i<=n;i++)
if(i==1)cout<<"这里就是你要去的地方拉!!"<<endl<<endl;
else
{
for(j=1;j<=n;j++)
{
if(i!=j)
{
cout<<"距离为"<<t.a[i][j]<<": ";
int next=t.path[i][j];
cout<<j;
while(next!=i)
{
cout<<"--"<<next;
next=t.path[i][next];
}
cout<<"--"<<i<<endl;
}
}
cout<<"等我推荐一条最佳路径供你返回吧(y/n):";
}
cin>>ch;
if(ch=='y')
{
if(i==2) cout<<"2--4--3--1"<<endl;
if(i==3) cout<<"3--2--1或者3--4--2--1"<<endl;
if(i==4) cout<<"如果你想去四景点我们会带你游览学校全景:1--2--4--3--1"<<endl;
cout<<"你还想去别的地方吗?(y/n)";
cin>>ch;
if(ch=='y') {cout<<"请输入一个你想去的地方:"; cin>>i;}
if(ch!='y')
{
cout<<" *****退出程序*****"<<endl;
cout<<" 欢迎下次再来"<<endl;
break;
}
}
else
{
break;
}
}
}
void main()
{
graph t;
t.picture();
t.creatp(t);
t.floyd(t,n);
t.bfs(t);
}
- 学校导游系统(图的应用另一版本)
- 图的应用(学校导游系统)
- 校园导游咨询(图的应用)
- 图的应用:校园导游系统(含Dijkstra和Floyd算法)
- 图的综合应用-迪杰斯特拉算法(导游图)
- 数据结构课设--4校园导游咨询(图的应用)
- 某学校的教学管理系统
- 校园导游咨询系统
- 校园导游系统
- 小型校园导游系统
- 校园导游系统
- 校园交通导游系统
- 景点导游系统
- Citipad评测:地图与景点完美结合的导游应用
- 基于GPS和PDA的电子导游系统的关键技术
- 学校管理系统(Python)
- 学校的一个项目(教务管理系统)
- 公园的导游图(利用简便方法实现五个景点的遍历)
- 如何在C++中动态分配二维数组
- 二十国集团财长将讨论全球降息应对金融危机
- 快速搭建MogileFS 2.x测试环境
- Java关键字之native,strictfp,transient,volatile
- tomcat上架设的WEBDAV服务,客户端如何才能映射为本地盘符?
- 学校导游系统(图的应用另一版本)
- fscanf ()函数
- 穷学生继承9.5亿欧元 一夜暴富带来无尽烦恼
- 支付宝支持的信用卡
- 正确使用 volatile 变量
- 什麽是PCB
- Java多核线程笔记-volatile的原理与技巧
- 折半查找
- 非常有用的Java日期时间操作函数代码一览