DP不仅广泛用于各种最优化问题,也常常用于排列组合的个数、概率期望计算等等,因为这些问题往往具有很好的“ 重叠子问题”特性,这些问题往往都起源于排列组合中的组合公式A(n, k) = A(n-1, k) + A(n-1, k-1)
例一:求解划分数
有n个无差别的物品,将他们划分成不超过m组,求划分方法数除以M的余数。
分析:dp[i][j]j的i划分的总数
dp[i][j] = ...
分类:
其他好文 时间:
2014-07-21 15:48:06
阅读次数:
268
划分数 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 有n个无区别的物品, 将它们划分成不超过m组, 求出划分方法数模M的余数.例如: n=4的m=3个划分, result=4(1,1,2; 1,3; 2,2; 4)使用动态规划(DP)方法, n的m划分a, 如果每个i都有a, {a-1}的集合就是n-m的m划分; a=0时, 就是n的m-1划...
分类:
其他好文 时间:
2014-07-21 11:14:04
阅读次数:
198
给一字符串,问最少加几个字符可以让它成为回文串
比如 Ab3bd 最少需要两个字符可以成为回文串 dAb3bAd
思路:
动态规划 DP[i][j] 意味着从 i 到 j 这段字符变为回文串最少要几个字符,枚举子串长。
if str[i] == str[j]:
DP[i][j] = DP[i + 1][j - 1]
else:
DP[i][j] = min( DP[i +...
分类:
其他好文 时间:
2014-07-19 02:35:45
阅读次数:
198
Given two words word1 and word2, find the minimum number of steps required to convert
word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted...
分类:
其他好文 时间:
2014-06-17 21:43:38
阅读次数:
219
POJ 1018 Communication System (动态规划)
题目大意:
有T组测试数据,每组1个n,表示n行,接下来n行,每行一个m,表示有m个管道,每个管道有流量和费用,最后求从n行中,每行选择1个管道,要求 B/P最大 ,B表示所选的那个方案中n个管道的最小的那个的流量,P表示n个管道费用和。
解题思路:
朴素的动态规划,dp[i]记录,当前B为i的P,也就是流量的最小费用和。实现可以利用队列代替滚动数组。...
分类:
其他好文 时间:
2014-05-25 06:58:58
阅读次数:
214
FATE
Problem Description
最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产...
分类:
其他好文 时间:
2014-05-21 10:16:18
阅读次数:
194
ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗?...
分类:
其他好文 时间:
2014-05-10 04:47:27
阅读次数:
286
题目连接: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
题目链接:http://poj.org/problem?id=3254
题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法。
分析:假如我们知道第 i-1 行的所有的可以放的情况,那么对于第 i 行的可以放的一种情况,我们只要判断它和 i - 1 行的所有情况的能不能满足题目的所有牛不相邻,如果有种中满...
分类:
其他好文 时间:
2014-04-29 13:33:20
阅读次数:
242