这个问题是01背包,而对于编程之美那道是完全背包问题,在编程之美中也有一个0,1背包问题。
而且是容量是小于等于,不是等于,对于是否等于,在初始化参数时候不一样,不小于全部初始化为0,恰好等于,初始化为无穷大,除了0.问什么呢?看算法入门竞赛那本,
背包问题其实不是很好理解,但是代码最终形式很简单,...
分类:
其他好文 时间:
2014-05-11 06:48:30
阅读次数:
246
不相交区间问题,贪心可水过。。。(贪心必会问题)...
分类:
其他好文 时间:
2014-05-11 03:07:37
阅读次数:
324
Substring时间限制:1000 ms | 内存限制:65535 KB难度:1描述You
are given a string input. You are to find the longest substring of input such
that the reversal of the ...
分类:
其他好文 时间:
2014-05-10 06:20:56
阅读次数:
257
ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗?...
分类:
其他好文 时间:
2014-05-10 04:47:27
阅读次数:
286
上文已讲述了回溯法以及01背包问题的原理,本文讲述如何顺序执行解决01背包问题以及通过模板模式重构软件。
一、顺序执行流程图
图1无剪枝函数的01背包问题顺序执行算法流程图
图2 有剪枝函数的01背包问题顺序执行算法流程图
无剪枝函数是通用的深度遍历算法,为了减少搜索深度可通过剪枝函数处理完全不可能的分枝。与递归方案的区别主要表现在i>=n后需要“回溯”,即用后进先出的方式将物...
分类:
其他好文 时间:
2014-05-09 22:15:22
阅读次数:
675
一、回溯法
回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中按照深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时,总是先判断该节点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该节点为根的子树的系统搜索,逐层向其原先节点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。
运用回溯法解题通常包含以下三个步骤:
· 针对所给问题...
分类:
其他好文 时间:
2014-05-09 22:06:39
阅读次数:
409
题目连接:check here~
题意是说给一个字符串,包含'(',')','[',']'四种字符,判断至少需要添加几个字符使所给字符串括号匹配。
区间型动态规划,设dp[i][j]表示在字符串s中i位置到j位置所需要添加的最少的字符(i
有两种情况:
1、dp[i][j] = dp[i+1][j] + 1;
表示:在i到j之间没有与s[i]相匹配的括号,则必须添加一个字符来与之匹配...
分类:
其他好文 时间:
2014-05-09 14:07:36
阅读次数:
230