当前位置: 编程技术>c/c++/嵌入式
数据结构课程设计- 解析最少换车次数的问题详解
来源: 互联网 发布时间:2014-10-15
本文导语: 问题描述: 设某城市有n个车站,并有m条公交线路连接这些车站。设这些公交车都是单向的,这n个车站被顺序编号为0~n-1。编号程序,输入该城市的公交线路数,车站个数,以及各公交线路上的各站编号。实现要求:求得从站0...
问题描述: 设某城市有n个车站,并有m条公交线路连接这些车站。设这些公交车都是单向的,这n个车站被顺序编号为0~n-1。编号程序,输入该城市的公交线路数,车站个数,以及各公交线路上的各站编号。
实现要求:求得从站0出发乘公交车至站n一1的最少换车次数。
程序设计思路:利用输入信息构建一张有向图G(用邻接短阵g表示),有向图的顶点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j)。这样,从站x至站y的最少上车次数便对应于图G中从点x至点y的最短路径长度。而程序要求的换车次数就是上车次数减1。
代码如下:
#include
#include
#define INFINITY 9999
#define MAXVNUM 30
char ans;
typedef struct
{
int Vnum;
int arcs[MAXVNUM][MAXVNUM]; //图的存储结构为邻接矩阵
}Graph;
int createGraph(Graph *g,int *start,int *end)
{
int n,m,i,j,k,s,count;
int t[MAXVNUM];
printf("n★ 请输入公交车站数和公交车数:n");
scanf("%d %d",&n,&m);
if(n
实现要求:求得从站0出发乘公交车至站n一1的最少换车次数。
程序设计思路:利用输入信息构建一张有向图G(用邻接短阵g表示),有向图的顶点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j)。这样,从站x至站y的最少上车次数便对应于图G中从点x至点y的最短路径长度。而程序要求的换车次数就是上车次数减1。
代码如下:
代码如下:
#include
#include
#define INFINITY 9999
#define MAXVNUM 30
char ans;
typedef struct
{
int Vnum;
int arcs[MAXVNUM][MAXVNUM]; //图的存储结构为邻接矩阵
}Graph;
int createGraph(Graph *g,int *start,int *end)
{
int n,m,i,j,k,s,count;
int t[MAXVNUM];
printf("n★ 请输入公交车站数和公交车数:n");
scanf("%d %d",&n,&m);
if(n