| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1289 人关注过本帖
标题:请问:如何用c语言编写一个程序求出任意两公交站点的线路
只看楼主 加入收藏
申静
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2009-9-12
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:11 
请问:如何用c语言编写一个程序求出任意两公交站点的线路
1.1 公汽线路信息.rar (35.08 KB)
问题是这样的:
已知公交线路及票价、换车耗时等信息,求一程序使得任意输入两站点能输出所有可行路线、每条路线的换车次数、每条路线所用时间和每条路线所需费用。以下是已知信息:
【附录1】基本参数设定
相邻公汽站平均行驶时间(包括停站时间): 3分钟
公汽换乘公汽平均耗时:        5分钟(其中步行时间2分钟)
公汽票价:分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:0~20站:1元;21~40站:2元;40站以上:3元
公交线路信息见要素文件,以下是对它的一些说明。
说明: 1、公汽线路编号格式:“L”+三位数字。如“L003”。
       2、公汽站点编号格式:“S”+四位数字。如“S0028”。
       3、每条线路有四行数据:
      第一行:线路编号,
      第二行:票价信息。
      第三行:上行线信息,以“上行:”开头,之后为站点信息,站点间以“-”隔开。
      第四行:下行线信息,以“下行:”开头,之后为站点信息。
     注意:
     如果下行线是上行线原路返回(站点名完全相同),则第四行为空,仅有第三行有数据,且直接以始发站编号开头。
      如果是环线,则第四行为空,第三行以“环行:”开头。

      4、最后一行为“END”标志。


    想了好久也不知道该如何下手,请大家指点指点!!谢谢各位了!!
搜索更多相关主题的帖子: 编写 线路 c语言 公交站点 
2010-07-20 10:19
申静
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2009-9-12
收藏
得分:0 
谢谢大家!!!
2010-07-20 10:20
申静
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2009-9-12
收藏
得分:0 
用广度优先搜索算法可以吗?不过还是不会写程序。
2010-07-20 10:23
申静
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2009-9-12
收藏
得分:0 
对了,站点总数是3957个
2010-07-20 10:36
申静
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2009-9-12
收藏
得分:0 
若先求出所有路线,这一问怎么编程呢?
2010-07-20 10:46
h4132003
Rank: 2
等 级:论坛游民
帖 子:2
专家分:14
注 册:2010-7-12
收藏
得分:10 
回复
你先把数据整理好,这需要写一个结构,里面包括站点名,站点个数,还的时间等数据,因为每个线路的站数可能不同,所以最好写成两个数据结构:
typedef struct _POSITION{
    char name[16];
    ...(可能还有好多这个自己定义,在这个结构中只定义站点的信息就可以了)
} POSITION;
然后再定义线路的结构
typedef struct _LINE{
    char name[16];
    int num;(站的数量)
    POSITION* ps;
    ...
} LINE;
那下一步就可以自由使用了
线路L1比如有10个站点:
LINE L1;
int num = 10;
char sz[][10]={"S001","S002",...,"S010"};
先分出10个空间出来  
L1.ps = (POSITION*)malloc(sizeof(POSITION)*num);

for(i=0; i<num; ++i){
    L1.ps[i]->name = sz[][i];
    ...(其它的数据)
}
然后把数据记录一下,写入一个文件,因为这样你可以保存多条线路的信息
比如还有一个线路2,站数为5,那就可以这样了
LINE L2;
int numL2 = 5;
L2.ps = (POSITION*)malloc(sizeof(POSITION)*numL2);
char szL2[][10]={"S001","S002",...,"S005"};

for(i=0; i<numL2; ++i){
    L1.ps[i]->name = sz[][i];
    ...(其它的数据)
}

这个你应该知道,我就不说了,
如用时从文件里读就好了
2010-07-20 10:57
h4132003
Rank: 2
等 级:论坛游民
帖 子:2
专家分:14
注 册:2010-7-12
收藏
得分:4 
对了,关闭程序时别忘了 free();
2010-07-20 10:58
申静
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2009-9-12
收藏
得分:0 
回复 7楼 h4132003
真抱歉!我的意思是如何写一个程序,使得输入任意两个站点A,B,就可以输出从A到B的所有路线,好像您的程序。。。。
2010-07-20 15:02
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:1 
还没听明白吗?LZ想直接要代码呀...........(鄙视懒人)

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-21 20:23
zgxxidian
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2009-8-30
收藏
得分:4 
我没仔细看。。是图论中的最短路问题么?如果是的话很简单,就用Floyd算法或者Dijkstra算法
2010-07-21 22:47
快速回复:请问:如何用c语言编写一个程序求出任意两公交站点的线路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046473 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved