- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜索,深度优先 剪枝 登山计划问题 教学目标 深度优先搜索的一般步骤 如何剪枝 如何编程 内容要点 复杂问题如何切入 化简思维 深度优先搜索的一般步骤 写好递归程序 任务:登山人选问题 攀登一座高山,假定匀速前进,从山脚登到山顶需走 N天,下山也需 N天。山上没有水和食品,给养要靠登山队员携带,而每个队员所携带的给养量要少于他登顶再返回山脚所消耗的给养量。因此,一定要组成一个登山队,在多人支援的情况下,保证有一个人登顶。 现在登山俱乐部有P个人待选,我们将P个人依次编号为 k=1, 2, …, P,令E[k] 表示编号为k的人每日消耗的给养量,M[k]表示编号为k的人最多可携带的给养量。登山计划要求所组成的登山队所有成员同时出发,其中一些人分别在启程若干天后返回,最终保证出发N天后至少有一人登顶,出发 2N 天后所有人都已返回山脚,无人滞留山上。 编程要求:用键盘输入天数N(N10)、俱乐部人数P(P10)之后,依次输入E[k]和M[k],k=1, 2, …, P,分别输出两个登山组队计划, 计划1,要求参加登山的人数最少,在满足这一条件之下消耗的总给养量最少。 计划2,要求消耗的总给养量最少。 输出的内容是:有多少队员参加登山,消耗的总给养量,在出发时每人分别携带多少给养,每人分别在出发几天后返回(几天后开始下山)。题目数据保证有解。 【输入格式】第1行为2个小于10的整数N和P, 两个整数之间有一个空格。第2行为P个整数,分别是E[1],E[2],…,E[P], 相邻两整数之间有一个空格。第3行为P个整数,分别是M[1],M[2],…,M[P], 相邻两整数之间有一个空格。 【输出格式】第1行到第3行为计划1的内容,第1行有两个整数,前者是参加登山人数Q1,后者是消耗的总给养量。第2行是Q1个整数,表示Q1个人在出发时每人携带的给养。第3 行是Q1个整数,表示Q1个人中的每个人在出发几天后返回。第4行到第6行为计划2的内容,第4行有两个整数,前者是参加登山人数Q2,后者是消耗的总给养量。第5行是Q2个整数,表示Q2个人在出发时每人携带的给养。第6行是Q2个整数,表示Q2个人中的每个人在出发几天后返回。 【输入样例】 6 6 1 2 2 2 3 3 7 8 17 18 22 25 【输出样例】 2 42 18 24 6 3 3 38 18 17 3 6 3 1 输出表明: 计划1中有2个人组队,分别携带18和24的给养量,分别在出发6天和3天之后返回; 计划2中有3个人组队,分别携带18、17和3的给养量,分别在出发后6天、3天和1天之后返回。 《登山人选》解题思路 当我们遇到一道难题时,先要想到:一、可不可以先从一个较简单的情况分析起,把难度先降低一些,等从中总结出规律性的认识后,再回到原题的要求上来;二、能不能先从一个特殊的例子分析起,再推广到一般情况。 为了简化问题,理出思路,可先将问题化简为:每人所能携带的给养量相同,且每人每天消耗的给养量也相同,选择一座不高的山,用一组人数不多的具体数据。比如有如下一组数据: N = 4 从山脚到山顶需4天路程 P = 6 登山俱乐部成员人数 E = 1 每人每天消耗的给养量 M = 5 每人最多携带的给养量 为了便于分析,图1画出了用上述数据组队登山的思路图。 4 下 返回高度 1 1 山 3 3 2 1 2 2 2 2 3 1 3 2 3 3 1
文档评论(0)