摘要: 初看这道题,有点深度搜索的味道。不过在解决之前我们要抓住题目隐含的意思:1、最后分段后每一段的长度一定是输入数总和的约束。2、我们先对输入数(假设是a[0..n-1])进行排序,形成从大到小顺序数。优先组合最大的数,以便接下剪枝分析。3、剪枝分析(1)、如果a[i - 1](i=1..n-1)在组合第m个木棍时不成立,若a[i] == a[i - 1],则直接跳过a[i]。因为a[i]也不会组合进第m个的木棍。(2)、若尝试组合第m个木棍的第一段时,如果数组a的剩余数里的最大数是a[j],即a[j]是组合第m个木棍的第一段,如果以a[j]为第一段的该组合不成立,那么直接退出搜索,跳回到对第m- 阅读全文
posted @ 2011-12-03 01:35 liftBug 阅读(192) 评论(0) 推荐(0) 编辑