- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最短距离计算——文档
最短距离计算
1问题说明
某公司国内市场IC与PC 各占一半,规定了它们的支点位置,IC的支点总在PC的支点左边
(x1, y1)与 (x2, y2) 之间的距离定义为 |x1 – x2| + |y1 – y2|.
IC与PC 支点间的位置集合为I和P,计算出i ∈ I, p ∈ P的所有点的最短距离.
例如:蓝色为IC 支点,红色为PC支点。 IC与PC之间的最短距离为5
2 输入
File Name?data.txt
data.txt 文件在下面内容中顺次储存
属于I的点的数n(1 ≤ n ≤ 100,000)
(x, y) 储存n 个 (-106 ≤ x ≤ 106, -106 ≤ y ≤ 106), x与 y是整数
属于P的点的数n(1 ≤ n ≤ 100,000)
(x, y) 储存m个 (-106 ≤ x ≤ 106, -106 ≤ y ≤ 106), x与 y是整数
使用 fopen与fscanf 函数,读出在data.txt 文件储存的内容
3 输出
I与P之间最短距离与形成最短距离的两个点i与p的坐标
程序所要时间(使用clock函数计算)
4 作业评价方法(两个程序都提交的话满分30分)
程序1:具体体现出 I的所有点(n个)与P的所有点(m个)之间的比较计算时(10分)
程序2: 改善 程序1的缺点的算法 具体体现时(20分)
100000个坐标各个输入时,程序1的实行时间与程序2的实行时间比较时要有悬殊的差异。
改善的算法的基本概念做成文书
5 实行的例子
参考文献:
/liangrt_fd/item/1049540c6226d373bfe97e4a
/heyongluoyao8/article/details/7109739
/u20/e89a329f-f9da-4042-91d7-c51efe11cffd.html
/s?ie=utf-8bs=%E6%9C%80%E8%BF%91%E6%8E%A5%E8%BF%91%E7%82%B9f=8rsv_bp=1wd=%E4%B8%A4%E9%9B%86%E5%90%88+%E6%9C%80%E8%BF%91%E6%8E%A5%E8%BF%91%E7%82%B9rsv_sug3=3rsv_sug1=2rsv_sug4=125inputT=8516
寻找满足条件的子序列 (之二):将一个集合拆分为和相同/最接近的两个子集(1)
上面我们谈到的问题“从一个数组中取得和为C的两个数”,数组可以理解为一个集合,集合也可以理解为一个数组,我们引入下面一个问题:
有一个包含n个正整数元素的集合,能否将其拆分为两个子集A,B,使A中元素之和与B中元素之和相等?
?????? 其实该问题只要找出一个集合即可,可以变换为:
?????? 有一个包含n个整数元素的集合U,存不存在一个子集A,是自己A的元素之和为U中元素之和的一半?
?????? 用数组array[n]来表示集合U,则U元素之和sum = array[0]+array[1]+…+array[n-1]。
?????? 那么只要判定是否存在子集A,A中元素之和为sum/2。
?????? 这个问题类似于背包问题,先让我们回顾一下背包问题,背包问题可以表述为:
有n个宝物,每个宝物有容积v和价值e属性,现有一个背包容积为V,问如何取宝物才可以保证背包中宝物价值最大。
?????? 背包问题动态规划方法:
????????????? S[i][v]表示对于前k个元素,背包总空间为v的情况下可以存放宝物的最大价值。
????????????? v[i]表示元素i的体积,e[i]表示元素i的价值,元素下表设为从0开始。
????????????? S[i][v] = max{S[i-1][v], S[i-1][v-v[i]]]+e[i]} i=1 and vv[i]
????????????? S[0][v]=0 if vv[0]
????????????? S[0][v]=e[0] if v=v[0]
?????? 当前问题可以表述成,一个背包容积为sum/2,可否用宝物将其装满?其实问题比背包问题还要简单许多:
????????????? 设isOk[i][v]:前i个元素可否将空间v装满,true?false。
?????? 问题可以表述为:
????????????? if i=1 and i=n-1
if v=v[i]
?????? isOk[i][v]=isOk[i-1][v] || isOk[i-1][v-[v[i]]]???
???????????????????? else
????????????? ?????? ?????? isOk[i]
文档评论(0)