数据结构编程回顾(五)交通咨询系统设计

题目五:交通咨询系统设计
设计要求:设计一个咨询交通系统,能让旅客咨询从任一个
城市到另一个城市之间的最短路径(里程)、最低费用或者
最少时间等问题。对于不同的咨询要求,可以输入城市间路
程、所需时间或者所需费用。
设计分3 个部分:
1、 建立交通网络图的存储结构;
2、 解决单源最短路径问题;
3、 实现两个城市之间的最短路径问题。

使用二维数组traffic[i][j]来存储两个城市i j之间的最短距离,

由于作者比较懒,所以直接用了粗暴的floyd的方法(五行代码那个):

根据图中的数据建立图:

先建立下三角,用999999表示不可直达,然后对称到上三角,对角线置0.

void create(int traffic[7][7]){
    int i,j;
    for(i=0;i<7;i++){
        for(j=0;j<7;j++){
            traffic[i][j]=999999;
        }
    }
    traffic[0][1]=2553;
    traffic[0][2]=700;
    traffic[0][3]=704;
    traffic[1][2]=511;
    traffic[1][4]=812;
    traffic[2][3]=349;
    traffic[2][5]=1579;
    traffic[3][6]=651;
    traffic[4][5]=2368;
    traffic[5][6]=1385;
      for(i=0;i<7;i++){
        for(j=0;j<7;j++){
            if(i==j){
                traffic[i][i]=0;
            }
            if(traffic[i][j]<999999){}
            traffic[j][i]=traffic[i][j];
        }
    }


}

floyd算法:

void floyd(int e[7][7]){
    int i,j,k;
 for(k=0;k<7;k++)
    for(i=0;i<7;i++)
        for(j=0;j<7;j++)
          if(e[i][j]>e[i][k]+e[k][j] )
                e[i][j]=e[i][k]+e[k][j];
}

然后就是完整代码了。

这么快。。。单源最短路可以使用Dijkstra,更快一些,但是有点长,ccf当时有道题类似求但愿最短路当时我觉得Dijkstra写起来太麻烦了我就直接五行代码,然后最后这道题得了三十分,如果Dijkstra应该过的样例多一些,毕竟两个的时间复杂度不在一个级别的。

 

#include <iostream>
#include <limits.h>
using namespace std;

void create(int traffic[7][7]){
    int i,j;
    for(i=0;i<7;i++){
        for(j=0;j<7;j++){
            traffic[i][j]=999999;
        }
    }
    traffic[0][1]=2553;
    traffic[0][2]=700;
    traffic[0][3]=704;
    traffic[1][2]=511;
    traffic[1][4]=812;
    traffic[2][3]=349;
    traffic[2][5]=1579;
    traffic[3][6]=651;
    traffic[4][5]=2368;
    traffic[5][6]=1385;
      for(i=0;i<7;i++){
        for(j=0;j<7;j++){
            if(i==j){
                traffic[i][i]=0;
            }
            if(traffic[i][j]<999999){}
            traffic[j][i]=traffic[i][j];
        }
    }


}
void floyd(int e[7][7]){
    int i,j,k;
 for(k=0;k<7;k++)
    for(i=0;i<7;i++)
        for(j=0;j<7;j++)
          if(e[i][j]>e[i][k]+e[k][j] )
                e[i][j]=e[i][k]+e[k][j];
}
void print(int p[7][7]){
int i,j;
  for(i=0;i<7;i++){
        for(j=0;j<7;j++){
            cout<<p[i][j]<<' ';
        }
        cout<<endl;
    }
}
void zuiduanlu(int z[7][7]){

int a,b;
while(1){
        cout<<"0:北京 1:西安 2:郑州 3:徐州 4:成都 5:广州 6:上海"<<endl;
cout<<"请分别输入想要查询的两个城市的编号:"<<endl;
    cin>>a>>b;
    if(a>=0&&b>=0&&a<7&&b<7)
    cout<<z[a][b]<<endl;
    else
     {
         cout<<"输入错误."<<endl;
         break;
     }
}
}
void danyuan(int d[7][7]){
    int a;
cout<<"0:北京 1:西安 2:郑州 3:徐州 4:成都 5:广州 6:上海"<<endl;
cout<<"请输入想要查询的城市的编号:"<<endl;
    cin>>a;
    if(a>=0&&a<7){
            int i;
        for(i=0;i<7;i++){
            cout<<a<<" to "<<i<<" is "<<d[a][i]<<endl;
        }
    }
    else
        cout<<"输入错误";
}
int main()
{
    int t[7][7];
    create(t);
    floyd(t);
    //print(t);
    zuiduanlu(t);
    danyuan(t);
    return 0;
}

 

  • 17
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 期末复习数据结构讲义pdf是指一份包含数据结构相关知识的教材或讲义的电子文档。 首先,这份讲义是为期末考试而准备的,因此它会涵盖这门课程所讲授的数据结构的主要概念和内容。它通常会包括各种数据结构的定义、特性、操作等内容,例如数组、链表、栈、队列、树、图等等。此外,这份讲义还可能包括一些与数据结构相关的算法和问题,如排序算法、查找算法、遍历算法等。 其次,这份讲义的目的是帮助学生复习数据结构的知识,提供一个系统化的学习资料。因此,它通常会按照逻辑顺序组织,从基础的概念开始,逐渐深入,直至较为复杂的内容。学生可以通过研读这份讲义,回顾和巩固课堂上所学的内容,理解数据结构的原理和应用。 此外,这份讲义可能会包含一些实例和习题,以帮助学生加深对数据结构知识的理解和应用能力。这些实例和习题可以用来训练学生解决实际问题的能力,并提供一些思路和方法。 最后,这份讲义以pdf格式呈现,具有电子化的特点。学生可以方便地通过电脑、平板电脑或手机等设备随时随地查阅,并进行标注、批注等操作,方便复习和学习。 总之,期末复习数据结构讲义pdf是一份针对数据结构课程的复习资料,通过系统、全面地总结了数据结构的相关知识,帮助学生进行复习,并提供了一些实例和习题,方便学生加深对数据结构的理解和应用。 ### 回答2: 期末复习数据结构讲义pdf是一份非常重要的学习资料。在期末考试前进行复习时,它可以作为一个很好的参考工具。 首先,数据结构是计算机科学中的一门核心课程,涉及到很多基础的知识和概念。这份讲义中记录了数据结构的各种基本概念、定义和性质,以及常见的数据结构类型,如数组、链表、栈、队列、树等。对于复习阶段来说,这些内容对于回顾和加深理解非常有帮助。 此外,这份讲义还包括了数据结构的一些重要算法和操作,例如查找、排序和插入等。这些算法是数据结构中的关键,理解它们的原理和实现方式对于提高代码效率和解决实际问题至关重要。 最后,这份讲义可能还包括一些实例或编程题目,供学生进行练习和巩固应用知识。这是非常有用的,因为通过实际操作和编程实践,学生可以更深入地理解数据结构的概念和应用,并提升自己的编程能力。 总之,期末复习数据结构讲义pdf是一份极其重要的学习资料,它汇集了数据结构的基本概念、算法和实例,为学生提供了一个全面深入的复习和巩固知识的工具。我们应该认真阅读、理解和应用这份讲义,希望能够在期末考试中取得优异的成绩。 ### 回答3: 数据结构是计算机科学中的重要基础课程,掌握数据结构对于学习和应用计算机算法具有至关重要的作用。期末复习数据结构讲义PDF是一种非常有效的学习资料。以下是对该讲义的回答: 期末复习数据结构讲义PDF对学习数据结构有很大帮助。首先,该讲义系统地总结了各种常见的数据结构及其应用,如链表、栈、队列、二叉树、图等。通过讲义中的讲解和示例,可以清晰地了解每种数据结构的定义、特点和操作。 其次,该讲义提供了大量的例题和练习题,能够帮助学生巩固对数据结构的理论知识和运用能力。通过讲义中的习题,学生可以对所学知识进行实际的应用,深化对数据结构的理解,并培养解决实际问题的能力。 此外,该讲义还包含了一些常见算法的讲解,如排序、查找、图的遍历等。这些算法与数据结构密切相关,掌握这些算法能够提升学生的算法设计和分析能力。 最后,该讲义的PDF格式方便学生进行随时随地的学习。学生可以通过电脑、平板或手机等设备随时打开讲义进行学习,非常方便。 综上所述,期末复习数据结构讲义PDF具有很高的教学价值。它能够帮助学生系统地学习和巩固数据结构的知识,提高算法设计和分析能力。同时,讲义的PDF格式也很方便学生进行学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值