贪心算法求解马踏棋盘及POJ1011木棒问题解析.doc

贪心算法求解马踏棋盘及POJ1011木棒问题解析.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贪心算法求解马踏棋盘及POJ1011木棒问题解析

Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 58000 Accepted: 12785 Description George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were originally. Please help him and design a program which computes the smallest possible original length of those sticks. All lengths expressed in units are integers greater than zero. Input The input contains blocks of 2 lines. The first line contains the number of sticks parts after cutting, there are at most 64 sticks. The second line contains the lengths of those parts separated by the space. The last line of the file contains zero. Output The output should contains the smallest possible length of original sticks, one per line. Sample Input 9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0 Sample Output 6 5 Source Central Europe 1995 【原题链接】 /JudgeOnline/problem?id=1011 【题意描述】 给出N根小木棒(以下称小棒)的长度Li,已知这N根小木棒原本由若干根长度相同的长木棒(以下称原棒)分解而来。要求出原棒的最小可能长度。 【数据范围】 木棒数N=64 任意小棒长度Li=50 【题目类型】 这题在网络上被称为经典的深搜题,其中用到的有哪些信誉好的足球投注网站方法和剪枝技巧十分经典。就我做过这题之后的感受来看,的确如此。其中的许多技巧效果非常显著而且在其它有哪些信誉好的足球投注网站题中也经常用到。另外建议大家在做有哪些信誉好的足球投注网站题的时候加上时间测试,以便在调程序的时候观察和比较各项剪枝带来的效率提升。 【解题思路】 由小到大枚举所有可能的原棒长度,通过深度优先有哪些信誉好的足球投注网站尝试小棒能否组合成原棒,一旦检验成功则算法结束,当前原棒长度即为最小可能原棒长度。 枚举过程如下,设小棒的总长为SUM,最长小棒长度为MAX,从MAX开始由小到大枚举原棒长度LEN,使得LEN能被SUM整除。然后进行有哪些信誉好的足球投注网站,尝试用所有小棒拼出SUM/LEN根的原棒。 有哪些信誉好的足球投注网站过程如下,首先用一数组标USED[]记某一小棒在当前状态下是否已经被用于组合原棒,另有有两个主要参数表示有哪些信誉好的足球投注网站时的状态,CPL表示已经组合好的原棒数,RES表示当前正在组合的原棒(以下称当前原棒)已组合出的长度。在每一种状态下,尝试所有可能拼接在当前原棒上的未使用的小棒,即将满足USED=FALSE且RES+Li=LEN的小棒接入当前原棒,传递RES的参数RES+Li,若RES+Li=LEN,传递CPL的参数CPL+1,否则,传递CPL,同时令USED=TRUE,然后进行递归,进入下一层有哪些信誉好的足球投注网站。退出下层递归后,将USED重新赋为FALSE。当CPL=SUM/LEN时,返回TRUE,表示有哪些信誉好的足球投注网站成功,一旦下一层递归返回TRUE,当前递归也返回TRUE,不断返回,直到跳出函数调用,表示当前原棒长度为可行解,且为最小,输出。 本题的难点在于有哪些信誉好的足球投注网站的方法和剪枝的技巧。本题中用到的主要技巧有: 1. 有哪些信誉好的足球投注网站顺序。首先依据小棒长度进行由大到小的排序,在每一层有哪些信誉好的足球投注网站时首先将长度大的小棒填入当前原棒中。因为当相对长的小棒占据了原棒的大部分空间后能大大减小可行的有哪些信誉好的足球投注网站状态。 2. 利用排序剪枝。在组合同一支原棒的时候,由于检验小棒是否可用的顺序也是由大到小的,因此在检验到一支小棒可用时,

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档