校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc

上传人:wj 文档编号:3451157 上传时间:2023-05-05 格式:DOC 页数:4 大小:25.50KB
下载 相关 举报
校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc_第1页
第1页 / 共4页
校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc_第2页
第2页 / 共4页
校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc_第3页
第3页 / 共4页
校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc

《校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc》由会员分享,可在线阅读,更多相关《校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc(4页珍藏版)》请在冰点文库上搜索。

校园导游程序 用无向图表示校园的景点 存放景点名称 路径等信息.doc

#include

constintn=4; //n表示校园图中顶点个数

constinte=5; //e表示校园图中路径

boolvisited[n+1]; 

#definemax32767

classgraph

{

public:

 

 intarcs[n+1][n+1]; //领结矩阵

 inta[n+1][n+1];   //距离

 intpath[n+1][n+1]; //景点

 voidfloyd(graph&t,constintn);

 voidpicture();

 voidcreatp(graph&t);

 voidbfs(grapht);

};

voidgraph:

:

picture()

{

 cout<<"   ******校园导游图******"<

 cout<<"以下是学校的景点"<

 cout<<"  ***************************"<

 cout<<"  * 1.校园门口  2.图书管 *"<

 cout<<"  *                        *"<

 cout<<"  * 3.饭堂      4.教学楼 *"<

 cout<<"  ***************************"<

 cout<<"以下是学校的路径图"<

 cout<<"    3"<

 cout<<"   1*---------*2 "<

 cout<<"    |       /|"<

 cout<<"    |      /|"<

 cout<<"    |     / |"<

 cout<<"   4|   9/  |5 "<

 cout<<"    |   /   |"<

 cout<<"    |  /    |"<

 cout<<"    | /     |"<

 cout<<"    |/      |"<

 cout<<"   3*---------*4  "<

 cout<<"    2"<

 

 cout<<"下面是景点与景点之间的距离和介绍:

";

 cout<<"1.校园门口--》2.图书管  距离为:

3"<

 cout<<"1.校园门口--》3.饭堂    距离为:

4"<

 cout<<"2.图书管  --》4.教学楼  距离为:

4"<

 cout<<"2.图书管  --》3.饭堂    距离为:

9"<

 cout<<"3.饭堂    --》4.教学楼  距离为:

5"<

 

 

 //校园图

}

voidgraph:

:

creatp(graph&t)

{

 inti,j;

 for(i=1;i<=n;i++)

 for(j=1;j<=n;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

   //把景点跟距离用一个二围数组存储下来

}

voidgraph:

:

floyd(graph&t,constintn)

{

  for(inti=1;i<=n;i++)

  for(intj=1;j<=n;j++)

  {

   t.a[i][j]=t.arcs[i][j]; //把距离付值给a.[i][j]

   if((i!

=j)&&(a[i][j]

    t.path[i][j]=i;

   elset.path[i][j]=0;

  }

  for(intk=1;k<=n;k++)

  {

   for(i=1;i<=n;i++)

   for(intj=1;j<=n;j++)

    if(t.a[i][k]+t.a[k][j]

    {

     t.a[i][j]=t.a[i][k]+t.a[k][j];

     t.path[i][j]=t.path[k][j];

    }

  }

 

}

voidgraph:

:

bfs(grapht) //从顶点i出发实现广度搜索搜索n

{

 

 intj,i;           //f,r分别为队列头,尾指针

 charch;

 cout<<"请输入一个你想去的地方:

";

 cin>>i;

 while(i<=4)

 {

 //cout<

 //for(i;i<=n;i++)

  if(i==1)cout<<"这里就是你要去的地方拉!

!

"<

  

  else

  {

  for(j=1;j<=n;j++)

  {

   if(i!

=j)

   {

    cout<<"距离为"<

 ";

    intnext=t.path[i][j];

    cout<

    while(next!

=i)

    {

     cout<<"--"<

     next=t.path[i][next];

    }

    cout<<"--"<

   }

  }

  cout<<"等我推荐一条最佳路径供你返回吧(y/n):

";

  

  }

  cin>>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>>ch;

     if(ch=='y'){cout<<"请输入一个你想去的地方:

"; cin>>i;}

     if(ch!

='y') 

   {

    cout<<"         *****退出程序*****"<

    cout<<"            欢迎下次再来"<

    break;

   }

  }

  else

  {

   break;

  }

  

 }

     

}

 

voidmain()

{

 grapht;

 t.picture();

 t.creatp(t);

 t.floyd(t,n);

 t.bfs(t);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2