北京大学ACM国际大学生程序设计竞赛7课件_第1页
北京大学ACM国际大学生程序设计竞赛7课件_第2页
北京大学ACM国际大学生程序设计竞赛7课件_第3页
北京大学ACM国际大学生程序设计竞赛7课件_第4页
北京大学ACM国际大学生程序设计竞赛7课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问题求解与程序设计

第七讲

搜索2004.2–2004.6内容提要搜索讨论1011stick讨论1054thetroublesomefrog参考王知昆的冬令营报告作业搜索的一般概念在解空间中尝试所有可能,找出满足条件的取值回顾填数游戏:1-9填在3*3的表格中,使得行、列、对角线的和均为15。方程组搜索–逐一尝试+剪枝题目讨论TheTroublesomeFrogIOI2002day1task1问题稻田问题青蛙从外面跳入稻田,踩过一些禾苗,后,跳出稻田。问题许多青蛙跳过稻田,形成多条蛙路,不同蛙路可以踩过同一作物。问题青蛙每天早上踩坏稻田,早上人们发现稻田有若干株作物被踩坏,但不知多少青蛙来过。也有不在蛙路上的被踩坏的作物。问题问,给定一块被踩坏的稻田,求可能的最长的蛙路上被踩坏的作物的数目。输出单个整数 --表示最长可能蛙路上踩坏的作物数目样例Figure-4问题的解这道题目也就是说,在给出的n个点中找出一些点的序列来,使得每一个点相对于上一个点的坐标都是一个相同的向量,且第一个点减去这个向量和最后一个点加上这个向量后均落在方格的外面。

问题的解由于每个点的上一个点/下一个点最多只能有n种选择,故一个点最多属于n条不同的蛙路。这样,对于某个确定的点来说,它的所有可能的下一个需要判断的点至多有n个。这样因为判断一个点在不在给定的点内只需要O(1)的复杂度,所以我们只需要O(n2)的时间就可以得出问题的解答。由于这个算法需要一个r*c的表来保存点在方格中的存在状态,故空间复杂度为O(n2)。

问题的解需要注意的是,蛙路中的点数少于3个的时候是不考虑的。所以这个时候的蛙路中的点数应该按照0来算。

实现细节Frogvsfrog’平面上点的表示Frog2–0 有冗余代码Frog2–1 去掉冗余Frog2–2 compare判断Frog2–3 改变表达式写法Frog2–4 增加剪枝Frog2–5 不太好的剪枝顺序Frog2–6 较好的剪枝顺序测试数据143000,(60*60)Uniformlyrandompoints31153000,(500*500)Xshapesandrandompoints500163000,(5000*1)Horizontalline20173000,(5*1000)SeveralLines+randompoints17184000,(100*100)Randompoints(uniformly)34194000,(200*20)Verydensepointsset200204000,(1000*1000)SeveralLines+randompoints500214000,(5000*5000)SeveralLines+randompoints311225000,(100*100)Chessboardstyle100235000,(1000*1000)SeveralLines+randompoints334245000,(3000*3000)Irregularlinearpoints10002550

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论