算法竞赛入门实验指导书201710s.pdfVIP

  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文档。上传文档
查看更多
《算法竞赛入门》实验指导书 2014年1月 目 录 实验 1:地铁线路问题 1  实验 2 :装箱问题 6  实验 3 :数字三角形 10  实验 4 :报数问题 13  实验 5 :邮局选址问题 15  实验 6 :归并排序 19  实验 7 :最少硬币问题 22  实验 8 :装载问题 24  实验 9 :防卫导弹问题 27  实验 10 :堡垒问题 30  实验 11 :最长公共子序列 34  附录 1 :ACM 国际大学生程序设计竞赛简介 37  附录 2 :北大POJ 简介 40  附录 3 :如何在C 语言中读写数据文件 43  附录 4 :如何在VISUAL STUDIO 6.0 环境下创建和调试 C++程序 47  实验 1:地铁线路问题 [实验目的] 1. 练习数组的使用; 2. 练习队列与循环队列。 [实验准备] 1.队列的定义与实现; 2 .循环队列上两点之间的距离的计算; 3 .串的比较操作。 [实验题目] 假设有两条地铁线路,1 号线为直线线路,2号线为环线线路,假设1号线的 各个站点名称分别为A10, A11, A12, A13, A14, A15, A16, A17,2 号线的各个站点名称分别为B1, B2, B3, A15, B4, B5, B6, A12, 另外,假设地铁都是双向运行的。现给出两个地铁站名分别作为起点和终点,请 给出从起点到终点至少需要多少站。 [算法分析] (1)直线线路和环线线路内的路线查找方式是不同的; (2)由于有两条路线,所以可能存在换乘; (3)由于直线线路和环线线路有两个交叉点,因此有时要分别计算通过这两 个站换乘的路线长度,并取长度短的路线作为最终路线; (4)在环线内部,要分别计算两个环绕方向上的路线长度,并取长度短的路 线作为环线路线长度。 1 可以把各个站点名称保存在数组中,然后根据站名的数组下标计算两个站之 间的距离。如果是直线线路,则可以通过计算数组下标的差值得到。如果是环线 线路,则需要考虑两个绕行方向的数组下标差值。 该题目可按如下流程实现: 如果两个站点恰好为两个交叉点, { dis1=两个点之间的环线线路距离; dis2=两个点之间的直线线路距离; 两个点之间的距离=min(dis1,dis2); } 否则 如果两个车站都在1号线上 { dis1=两个点之间的直线线路距离; dis2=起点到第一个交叉点的距离+两个交叉点之间的距离+第二个交叉 点到终点的距离; dis3=起点到第二个交叉点的距离+两个交叉点之间的距离+第一个交叉 点到终点的距离; 两个点之间的距离=min(dis1,dis2,dis3); } 否则 如果两个车站都在2号线上 { dis1=两个点之间的环线顺时针前进距离; dis2=两个点之间的环线逆时针前进距离; dis3=两个点先走2号线,再走1号线,再走2号线; 两个点之间的距离=min(dis1,dis2,dis3); } 否则 如果起点在1号线上,终点在2号线上 { dis1=起点与交叉点A12的距离+交叉点A12与终点的距离; dis2=起点与交叉点A15的距离+交叉点A15与终点的距

文档评论(0)

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

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

1亿VIP精品文档

相关文档