- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜 索 基 础
浙江省镇海中学 xt
1.穷举法
[例题 1] 光光的困惑(故事题)
[例题 2] 砝码称重(NOIP T96-4)
[例题 3] 逻辑判断(TOJ1130 )
[例题 4] 数字和问题(宁波 2005 小学组)
[例题 5] 等差数列(ZJOI2004)
[例题 6] 敲七、敲七版本 2 (TOJ1006/1044 )
[例题 7] 猫老大数(TOJ1081,猫老大与彩虹的竞赛)
[例题 8] 勇闯黄金十二宫金牛宫(TOJ1001,黄金十二宫)
[例题 9] 石子合并(TOJ1017 )
[例题 10] 反正切函数的运用(NOI2001)
[例题 11] 广告印刷(TOJ 一周年比赛)
2.深度优先搜索
[例题 1] 四色图问题(宁波 2005 高中组)
[例题 2] 外星生命(TOJ1062 )
[例题 3] 数的划分、放苹果(NOIP T2001-2、POJ1664)
[例题 4] 跳棋的挑战(USACO Training 1.1.4-1)
[例题 5] 骑士的游历 1、2 (NOIP T97-3经典问题)
[例题 6] 黑白棋(ZJOI03)
[例题 7] 卫星照片(USACO Contest NOV05)
[例题 8] 房间问题(IOI94)
3.广度优先搜索
[例题 1] 救援行动(TOJ1051 By AngelForYou )
[例题 2] 瑰丽华尔兹(NOI2005)
[例题 3] 倒水问题(经典问题)
[例题 4] 麻将游戏(SGOI)
[例题 5] 拯救大兵瑞恩(CTSC99)
[例题 6] 补丁 VS 错误(CTSC99)
4.双向广度优先搜索
[例题 1] 九数码问题(ZJOI2005)
[例题 2] 字串变换(NOIP T2002-2)
5.迭代加深 DFS
[例题 1] 跳房子(USACO Contest NOV05)
[例题 2] 埃及分数(OIBH)
6.随机化法
[例题 1] 线型网络(OIBH)
[例题 2] 勇气的挑战(TOJ1073 )
[例题 3] 虫食算(NOIP T2004-4)
7.总结
1.穷举法
[例题 1] 光光的困惑
光光的妈妈给光光一篮鸡蛋,让光光拿去给外婆。光光很高兴地接过鸡蛋,
向外婆家走去。途中,光光想:这一篮鸡蛋有多少个呢?于是,光光就开始一个
个地拿出鸡蛋,数了起来:一个、两个……一不小心,蛋全倒翻摔碎了。光光大
哭起来……
例题中,光光数鸡蛋的方法是穷举法,他依次取出鸡蛋然后数,也就是遍历
了所有的情况。这样的方法,在其他的题目中,此种方法也是适用的。这是一种
最基础的搜索,它的本身不需要用到高深的知识,却是搜索算法的核心。
搜索算法的核心就是遍历。而穷举具备了这一点。所以,在搜索找不出很好
的方法时,穷举是我们的唯一法宝。
下面,我们讲一道经典习题的穷举算法。这是一种经典的穷举。
[例题 2] 砝码称重(NOIP T96-4)
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重=1000),输出用
这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。
最容易想到的方法就是枚举出有几个 1g,几个 2g,几个 3g……几个 20g,
然后统计有几种不同的重量。用数组 w[1]~w[6]表示重量,q[1]~q[6]表示选
择方案。算法描述如下(Pascal 语言):
for q[1]:=0 to a1 do
for q[2]:=0 to a2 do
for q[3]:=0 to a3 do
for q[4]:=0 to a4 do
for q[5]:=0 to a5 do
for q[6]:=0 to a6 do begin
sum:=0;
for i:=1 to 6 do sum:=sum+q[i]*w[i];
文档评论(0)