石家庄铁道学院的校园导航图!

来源:互联网 发布:从1688上传淘宝店铺 编辑:程序博客网 时间:2024/06/10 09:02

#include <stdio.h>

#define FALSE 0

#define TURE 1

int G[14][14]=

{

{32767,20,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767},

{20,32767,260,32767,32767,32767,32767,32767,40,32767,32767,32767,32767,32767},

{32767,260,32767,40,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767},

{32767,32767,40,32767,140,180,32767,32767,32767,32767,32767,32767,32767,32767},

{32767,32767,32767,140,32767,32767,32767,32767,32767,32767,32767,32767,100},

{32767,32767,32767,180,32767,32767,32767,32767,100,32767,32767,32767,32767,40},

{32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,80,140},

{32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,140,30,32767},

{32767,40,32767,32767,32767,100,32767,32767,32767,60,32767,32767,30,32767},

{32767,32767,32767,32767,32767,32767,32767,32767,60,32767,40,32767,32767,32767},

{32767,32767,32767,32767,32767,32767,32767,32767,32767,40,32767,80,32767,32767},

{32767,32767,32767,32767,32767,32767,32767,140,32767,32767,80,32767,32767,32767},

{32767,32767,32767,32767,32767,32767,80,30,30,32767,32767,32767,32767,32767},

{32767,32767,32767,32767,100,40,40,32767,32767,32767,32767,32767,32767,32767}

};

void map()
{
 printf("  ⑿田径场━━━140━━━⑻第九实验楼           ┍⑸九栋宿舍楼━━━━┑/n");
 printf("     ┃                      ┃                 ┃100              140┃/n");
 printf("     ┃                   30 ┃                 ┃                    ┃/n");
 printf("     80                   ⒀路口1━━━⑺超市━━ ⒁路口2             ┃/n");
 printf("     ┃                   30 ┃  80        40   ┃40                  ┃/n");
 printf("     ┃                      ┃                 ┃                    ┃/n");
 printf("  ⑾轮滑场━━⑽体育馆━━━⑼图书馆━━━━━⑹医院━━━━━━━⑷六栋/n");
 printf("          40         60      ┃         100                 180       ┃/n");
 printf("                             ┃                                       ┃/n");
 printf("                             40                                     40┃/n");
 printf("                             ┃                                       ┃/n");
 printf("                             ┃                                       ┃/n");
 printf("                       ⑵第一教学楼━━━━━━━260 ━━━━⑶综合食堂/n");
 printf("                             ┃/n");
 printf("                             20/n");
 printf("                             ┃/n");
 printf("                          ⑴大门口/n/n/n/n");
 printf(" 1:大门口  2:第一教学楼  3:综合食堂  4:六栋   5:九栋  6:医院   7:超市      /n");
 printf(" 8:第九实验楼  9:图书管  10:体育馆  11:轮滑场  12:田径场  13:路口1 14:路口2/n");
}
struct place
{
 int ordernum;
 char name[12];
}site[14]={{0,"大门口"},{1,"第一教学楼"},{2,"综合餐厅"},{3,"六栋"},{4,"九栋"},{5,"医院"},{6,"超市"},
{7,"第九实验楼"},{8,"图书馆"},{9,"体育馆"},{10,"轮滑场"},{11,"田径场"},{12,"路口1"},{13,"路口2"}
};
int shiyan[14];
void shortpath(int G[14][14],int v0,int p[14][14],int *D)
{
 int vexnum=14;
 int final[14];
 int v,w;
 int i,min,j;
 shiyan[0]=v0;
 for(v=0;v<vexnum;v++)
 {
  final[v]=FALSE;D[v]=G[v0][v];
  for(w=0;w<vexnum;w++)
   p[v][w]=FALSE;
  if(D[v]<32767)
  {
   p[v][v0]=TURE;
   p[v][v]=1;
  }
 }
 D[v0]=0;final[v0]=TURE;
 for(i=1;i<vexnum;i++)
 {
  min=32767;
  for(w=0;w<vexnum;w++)
   if(!final[w])
    if(D[w]<min)
    {
     v=w;min=D[w];
    }
    final[v]=TURE;
    shiyan[i]=v;
    for(w=0;w<vexnum;w++)
     if(!final[w]&&(min+G[v][w])<D[w])
     {
      D[w]=min+G[v][w];
      for(j=0;j<14;j++)
       p[w][j]=p[v][j];
      p[w][w]=1;
     }
 }
}
int introduce(int a)
{
 switch(a)
 {
 case 1 : printf("大门口:学校正门!/n");break;
 case 2 : printf("第一教学楼:俗称“一教”,位于大门口对面!/n");break;
 case 3 : printf("综合食堂:学校看起来最新的食堂,也是规模最大的食堂/n");break;
 case 4 : printf("六栋:三大女生宿舍楼之一,聚集了学校大部分的女生!/n");break;
 case 5 : printf("九栋:学校里N多的男生宿舍楼之一!/n");break;
 case 6 : printf("医院:学生无论何时都不愿去的地方,看不好病也就算了,还不准时营业!/n");break;
 case 7 : printf("超市:所有正常男生最痛恨的地方之一,处于两个路口之间!/n");break;
 case 8 : printf("第九实验楼:基本上被称为机房的地方,除了上课时间,其余时间都是玩游戏的地方!/n");break;
 case 9 : printf("/n");break;
 case 10: printf("/n");break;
 case 11 : printf("/n");break;
 case 12 : printf("/n");break;
 case 13 : printf("/n");break;
 case 14 : printf("/n");break;
 }
}
void choose1()
{
 int p[14][14],D[14];
 char sel;
 int i,k;            //均作为循环使用
 int start,end;      //起始地点和终止地点
 printf("请依次输入起始和终止地点的编号<空格隔开>/n");
 scanf("%d %d",&start,&end);
 printf("是否需要景点介绍?<用“Y/N表示”>/n");
 sel=getchar();
 if(sel=='Y'||sel=='y')
 {
  introduce(start);
  introduce(end);
 }
 else
 {
  start--;
  end--;
 }
 shortpath(G,start,p,D);
 printf("路径是:");
 for(k=0;k<14;k++)
  for(i=0;i<14;i++)
   if(p[end][i]==1&&shiyan[k]==i)
    printf("%s ",site[shiyan[k]].name);
   printf("/n总路程长度是:%d ",D[end]);
   printf("/n");
}

void main()
{
         
 map();
 choose1();
 
}
/*部分未完成*/

原创粉丝点击