- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
历届NOIP搜索算法全集.doc
历届NOIP搜索算法全集转自:oifans用动态规划来解背包问题 在历届NOIP竞赛中,有4道初赛题和5道复赛题均涉及到背包问题,所谓的背包问题,可以描述如下:一个小偷打劫一个保 险箱,发现柜子里有N类不同大小与价值的物品,但小偷只有一个容积为M的背包来装东西,背包问题就是要找出一个小偷选择所偷物品的组合,以使偷走的物品总 价值最大。 如有4件物品,容积分别为: 3 4 5 8 对应的价值分别为: 4 5 7 10 小偷背包的载重量为:12 则取编号为1 2 3的物品,得到最大价值为16。 算法分析:如果采用贪心法,则先取价值最大的10,消耗了容积8,下面只能取容积为4的物品,得到价值5,这样总价值是15,这不是最优解,因此贪心法是不正确的。 采用穷举法,用一个B数组来表示取数的标记,当B=0时表示第i件物品不取,当B=1时表示第i件物品已取,初始化全部取0,以下算法是从后面的物品开始取起,通过B数组的取值把15种取法全部穷举出来,价值MAX初始化为0。 B[0] B[1] B[2] B[3] B[4] 0 0 0 0 0 {初始化} 0 0 0 0 1 {取第4件物品,容积为8,不超,价值为10,将MAX替换为10} 0 0 0 1 0 {取物品3,容积为5,不超,价值为7,不换} 0 0 0 1 1 {取物品3、4,容积为13,超} 0 0 1 0 0 {取物品2,容积为4,不超,价值为5,不换} 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 …… 0 1 1 1 0 {这是最佳方案} 0 1 1 1 1 1 0 0 0 0 {当B〔0〕=1时停止,B〔0〕称为哨兵} 生成B数组中数据的方法如下: fillchar(b,sizeof(b),0); while b[0]=0 do begin j:=n; while b[j]=1 do dec(j); b[j]:=1; for i:=j+1 to n do b:=0; end; 小结:以上每件物品只能取1件,所以取法只有0和1两种情况,我们称之为0、1背包,算法的时间复杂度为O(2N),在1秒内N只能做到20。 例1:选数(NOIP2002 初中组复赛第2题) [问题描述]:已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。 例如上例,只有一种的和为素数:3+7+19=29。 [输入]: 键盘输入,格式为: n , k (1=n=20,k<n) x1,x2,…,xn (1=xi=5000000) n[输出]: 屏幕输出,格式为: 一个整数(满足条件的种数)。 [输入输出样例]: 输入: 4 3 3 7 12 19 输出: 1 [算法分析]:本题应用背包问题中取数的方法进行穷举,在取数的过程中,当B数组中有K个1的时候将对应的K个数相加,再判断是不是素数。 主要程序段如下: readln(n,k); sum:=0; for i:=1 to n do read(a); fillchar(b,sizeof(b),0); while b[0]=0 do begin j:=n; while b[j]=1 do dec(j); b[j]:=1; for i:=j+1 to n do b:=0; m:=0; for i:=1 to n do if b=1 then m:=m+1; {统计1的个数} if m=k then begin 计算此种取数方法得到的和S; if S 是素数 then sum:=sum+1; end; end; 例2:采药(NOIP2005 初中组复赛第3题) 【问题描述】 辰 辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到 一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间 里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务吗? 【输入文件】 输 入文件medic.in的第一行有两个整数T(1 = T = 1000)和M(1 = M = 100),用一个空格隔
您可能关注的文档
- 动态软件体系结构描述方法.doc
- 动物、植物的生长或其他自然现象及收 到的启发.doc
- 动物检疫学练习.doc
- 动物模型建立.doc
- 动物生物学名词解释.doc
- 动物的取食、消化与吸收.doc
- 动物的生殖ppt.ppt
- 动物系统学.doc
- 动物细胞核移植.ppt
- 动画规律.doc
- 《移动通信终端测试与维修》课件 第五章 5.1-5.3.pptx
- 虚拟现实(VAR)交互设计及应用开发 教案 第五章 火箭发射虚拟交互制作.docx
- 影视制作技术(第2版)课件全套 项目1--10 磨刀之功 影视制作入门知识 --- 大功告成 渲染输出学习导航.pptx
- 机械三维模型设计 课件 模块10 结构仿真分析.pptx
- 虚拟现实(VAR)交互设计及应用开发 课件 第四章KrismaVR编辑器速成指南.pptx
- 机械三维模型设计 课件 模块10.2 薄板静力学分析.pptx
- 影视制作技术(第2版)课件 任务6.1 使用Premiere Pro制作《美丽校园》片头效果.pptx
- 机械三维模型设计 课件 模块8 3D曲面零件设计.pptx
- 影视制作技术(第2版)课件 任务9.3 制作《美丽校园》片尾字幕.pptx
- 区块链会计 课件 张泓波 第5--8章 采购与付款业务---纳税业务 .pptx
最近下载
- 液冷线缆、充电枪及充电设备.pdf VIP
- 网络信息安全责任书.docx VIP
- 建设用地土壤污染状况调查现场采样检查记录表.doc VIP
- DLT 5293-2013 电气装置安装工程 电气设备交接试验报告统一格式.docx
- 国际客运考试题库及答案.doc VIP
- 2025年【PPT课件】2025《煤矿安全规程》通风瓦斯防灭火主变部分解读-新版.pdf
- ZZ027 全国职业院校技能大赛(中职组) 婴幼儿保育赛项理论题第6套(含答案).doc VIP
- 《普通高等学校产教融合工作指引》.pdf VIP
- 2016年东海区海洋环境公报.pdf VIP
- GB-T 9983-2004 工业三聚磷酸钠.pdf
原创力文档


文档评论(0)