2013年_中兴捧月程序设计大赛_求网络中两点之间路径_程序_cpath.docVIP

2013年_中兴捧月程序设计大赛_求网络中两点之间路径_程序_cpath.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013年_中兴捧月程序设计大赛_求网络中两点之间路径_程序_cpath

求网络中两点之间的路径 (申明:本文全部原创,谢谢配合,多谢支持) (作者:ngspace) (日期:2013_09_03) 一、题目 在一个网络拓扑中(可以支持数千个点的规模),边是双向的,两点之间最多有一条边,所有边的距离相等(也就是权重为1),给出源和目的两个点,需要找出满足条件的路径。 1。找出源和目的之间的一条主用路径。 2。找出源和目的之间的一条备用路径。 备用路径和主用路径至少有一个点或边不相同。 ?关于备用路径可能满足下列约束: ?1)和主用路径没有相同的中间节点。 ?2)和主用路径没有相同的边。 例如: 示例数据 A_NE_ID,Z_NE_ID 2,28 4,48 9,45 10,1 10,11 11,12 11,2 12,13 13,14 15,23 16,24 17,25 18,19 18,1 20,21 20,29 20,3 21,22 22,23 23,24 24,32 26,27 26,34 27,28 27,35 28,36 29,37 30,31 32,40 32,33 32,31 33,25 33,41 36,44 37,38 37,45 39,30 39,4 40,5 40,49 43,42 43,50 43,6 44,43 45,7 45,8 46,37 46,47 47,48 48,40 拓扑图描述文件 拓扑图文件说明,出于简化的目的,网络拓扑节点用数字表示。 附一个节点较多的测试数据,该数据在在节点631 到节点1980之间找路。 二、初赛阶段要求(含编程语言、开发及运行环境的要求) 1.编程语言:C/C++或者JAVA 2.运行环境:Windows XP 3.源代码和算法说明 4.若采用c/c++,要输出可执行程序;若采用java,给出jar和bat。 5.程序支持命令行参数, /f后表示拓扑图文件 /s?表示源节点 /d表示目的节点 /c?表示条件(取值1-2,满足上面两个约束条件之一) /o?表示输出结果文件 如cpath.exe? /ftopolink_example01.txt? /s20? /d32? /c2 /otopolink_result01.txt 表示根据拓扑图文件topolink_example01.txt,计算节点20和节点32之间的主用和备用路径,备用路径要求满足约束条件2。 输出结果文件topolink_result01.txt内容可能的为 main:? 20, 21 ,22, 23, 24, 32 backup: 20,29,37, 46,47,48, 40,32 三、初赛阶段审核标准及评价细则 测试结果80分,10组随机网络数据,网络规模:网元结点数目100到5000不等。 在10分钟内完成计算并正确输出结果的,每计算正确一组数据加8分(主备各4分),?路径较短优,耗时较短优。 代码满分5分,可读性及注释。 文档满分15分,要求给出设计思想。 四、设计思想 针对该问题,可将网络中每个点看成一个节点,从而采用图来存储数据。在程序中具体采用的是图的链接表进行存储。寻找主用路径和备用路径采用回溯法求出多条路径,并从中选出满足条件的路径,之后将输出结果写入文件中。 程序设计主要包括命令处理模块,数据读取模块(含链接表建立),求解路径模块(含输出写入文件)三大模块。 命令处理模块中将会检测输入命令及其参数是否满足正确。如果输入正确则从中提取相关参数以供后面进行求解使用。如果输入命令不满足要求则给出错误提示并给出正确的命令格式样式。 数据读取模块实现从指定文件(文件名又命令处理模块提取的参数提供)读取节点数据及各条边,并将其存入链接表中。 求解路径模块根据命令中输入的源节点和目标节点在图中寻找满足要求的主用路径和备用路径。本模块采用的回溯法求解路径,并进行判断是否满足条件。如果满足则停止计算并将数据写入文件,若不满足则继续求解直至满足条件为止。 具体的程序设计及个模块的实现请看代码。 五、我的代码 #include stdio.h #include string.h #includemath.h #define NULL 0 struct edgenode { int edgeno; struct edgenode *next; };//定义顶点节点结构 typedef struct vex { struct edgenode *first; }vex;//用于存放各顶点节点对应的第一个链指针 int cmderror(void); int initcmd(int argc, char *argv[]); void readfile(char filename[]); int getpath(int st,int en,int cond); void

您可能关注的文档

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档