动态规划的核心是状态和状态转移方程。01背包问题是最基本的背包问题,它包含了背包问题中状态、方程的最基本思想,另外,别的类型的背包问题往往也可以转换成01背包问题求解。...
分类:
其他好文 时间:
2014-05-14 00:40:03
阅读次数:
276
Problem Description
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grav...
分类:
其他好文 时间:
2014-05-13 06:58:19
阅读次数:
523
有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。...
分类:
其他好文 时间:
2014-05-11 21:19:09
阅读次数:
400
这个问题是01背包,而对于编程之美那道是完全背包问题,在编程之美中也有一个0,1背包问题。
而且是容量是小于等于,不是等于,对于是否等于,在初始化参数时候不一样,不小于全部初始化为0,恰好等于,初始化为无穷大,除了0.问什么呢?看算法入门竞赛那本,
背包问题其实不是很好理解,但是代码最终形式很简单,...
分类:
其他好文 时间:
2014-05-11 06:48:30
阅读次数:
246
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
先亮出题目:
一,背包问题 及 回溯法解其问题的伪代码
二,赋值后的具体实例
三,如何看懂伪代码
(1)真正了解回溯法的核心思想
我总结的回溯法解题步骤:
先找出第一个解
回溯
(2)回溯法核心思想 + 伪代码 + 图9-5 树结构来分析
四,伪代码代入值解析
核心:先找到第一个解,再回溯。...
分类:
其他好文 时间:
2014-05-08 16:16:30
阅读次数:
386
昨晚Debug了好久始终找不出哪里错了,今早再一看发现自己已荣升逗比Beta 2.0 Version.
个人感觉此题为HDU 4003 的弱化版。
把每棵子树都看成一类商品,在每类商品中至多选一件。则问题转化为最基本的分组背包问题。
dp[s][c][k] c == 1时,表示在s结点不返回时走K的最大收益,c == 0时,表示在s结点重新返回时走k步的最大收益。
可以dfs从底到顶更新d...
分类:
移动开发 时间:
2014-05-07 04:52:22
阅读次数:
500
首先是活动安排问题。
贪心的关键在于排序策略。
思路很简单,对所有活动的结束时间排序,如果结束时间相同,因为要尽量多的参加活动,所以选取开始时间尽量晚的(这样可以安排的比较多),然后依次从早到晚选取不冲突的活动加入,即为最多可以参加的活动。
#include
#include
#include
#include
#include
using namespace std;
clas...
分类:
其他好文 时间:
2014-05-06 23:01:00
阅读次数:
394