![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 80
kindlucy
这个作者很懒,什么都没留下…
展开
-
POJ 1836-ALignment 动态规划
<br />题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1836<br /> <br />解题报告:<br /> <br />设各个成员的身高的数组为h[0...n-1],n为总人数。要满足题目条件,对0<=i<n,不妨设d[i]代表h[i]左边满足条件(即身高递增)的排列中可以安排的最多的人数,p[i]代表h[i]右边满足条件(即身高递减)的排列中可以安排的最多的人数。<br /> <br />则有递推式:<br />d[i]=max(d[k1]+1原创 2010-07-12 20:58:00 · 1511 阅读 · 0 评论 -
interviewstreet - Grid Walking 动态规划
题目来源:https://www.interviewstreet.com/challenges/dashboard/#problem/4e48bfab1bc3e 解题报告: 首先计算组合值C[m][n],按照公式C[m][n] = C[m-1][n-1] + C[m-1][n]获得。 f[i][j][k],代表第i维,位于位置j时,走k步有几种走法。 则有方程f[i][j][k] = f[原创 2012-09-21 00:44:16 · 1878 阅读 · 0 评论 -
100块钱有多少组成方式
题目是问100块钱用现有的币值,有多少组成方式。 要注意的是,一开始用float,发现 5 / 0.1算出来是49.999多,原来浮点数是有误差的,所以大家都*10,用整数来除。 方法一:用递归 #include using namespace std; int num[8]; int money[8] = {1, 5, 10, 50, 100, 200, 500, 1000}; i原创 2012-09-20 21:01:52 · 1384 阅读 · 0 评论 -
POJ 1015-Jury Compromise动态规划
题目来源:http://poj.org/problem?id=1015 解题报告: f[i][j]: 代表i个人,sum(DJ) - sum(PJ)为j-400 的组合中,最大的sum(DJ) + sum(PJ)值 path[i][j]:代表路径中的最后一人的编号。 d[k] = Dj[k] - Pj[k] s[k] = Dj[k] + Pj[k] 那么有递推式: f[i][j +原创 2012-09-11 23:53:08 · 2123 阅读 · 0 评论 -
PKU ACM 1159-Palindrome
题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1159解题报告:求一个字符串中至少添加几个字符可以使该字符串变成回文串。也是一道简单的DP,我这里用了备忘录的方法,f[i][j]表示要使字符串的第i个到第j个间的字符串成为回文串至少需要添加的字符的个数,那么有两种情况:第一种,a[i]=a[j],那么f[i][j]=f[i+1][j-1]第二种,a[i]!=a[j],那么f[i][j]=min(f[i+1][j], f[i][j-1]),对于f[][],原创 2010-06-20 16:19:00 · 1376 阅读 · 0 评论 -
PKU ACM 1163-The Triangle
<br />题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1163<br /> <br />解题报告:<br />难的DP不会做,先从简单的入手~<br />自底向上,f[k]保存从底部到a[k]的所有可能路径的和的最大值,那么f[k]=a[k]+a[k]下两个分支的f[]的最大值。<br /> <br />#include <iostream> using namespace std; int max(int a, int b) { re原创 2010-06-18 22:16:00 · 1355 阅读 · 0 评论 -
PKU ACM 1080-human gene function
题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1080解题报告:最近模糊的看了一下算法导论的动态规划一章,好像理解了,结果做题的时候,发现还是不会做,总是找不到子问题,不知道怎么设最优子结构,本来想找一道简单的来做,就找到了1080,结果还是没思路,看了别人的代码,才理解了一点,看来还是要多做多练啊。这道题是求两个字符串的相似度,设第一个字符串s1[0],s1[1],s1[2],....s1[len1-1], 第二个字符串s2[0],s2[1],....原创 2010-06-17 11:12:00 · 878 阅读 · 0 评论 -
PKU ACM 1050- to the max
<br />题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1050<br /> <br />解题报告:<br />这道题是求二维子数组之和的最大值,详细的解释在编程之美2.15节有讲过,我的算法就是编程之美上提到的。<br /> <br />算法思路主要就是枚举行,设b[i][j]代表第j列中前i行的数据之和。那么,第m行到第n行间的第j列数据之和就是b[m][j]-b[n-1][j]。<br />这样按行枚举后,题目就转化为求一维子数组之和的最大值,这原创 2010-06-17 12:21:00 · 1402 阅读 · 0 评论 -
PKU ACM 2479-Maximum sum
一道动态规划的题http://acm.pku.edu.cn/JudgeOnline/problem?id=2479 Maximum sumTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 17327 Accepted: 5239DescriptionGiven a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below: 这里公式看不见,就是求数组A中原创 2010-06-14 19:42:00 · 1622 阅读 · 0 评论 -
POJ 1276-CashMachine 背包问题
<br />题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1276<br /> <br />解题报告:<br /> <br />设f[k]=1代表可以组成金额为k的钱。<br /> <br />从第一个D1开始,有f[1*n1]=1, f[2*n1]=1, ..., f[D1*n1]=1<br /> <br />然后到Dk,就应该在之前所有可以组成的钱币的情况下,将可以组成的钱币再加上1*nk, 2*nk, .. Dk*nK,得到新的可以组成的更多的金额原创 2010-08-07 23:57:00 · 806 阅读 · 0 评论 -
POJ 1837-Balance 动态规划
<br />题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1837<br /> <br />解题报告:<br /> <br />想了很久,还是看了别人的解题报告<br />背包问题的形式吧<br />设f[i][j]代表挂了前i个砝码时,平衡度为j的方法的个数。<br />显然,平衡度的范围为[-25*20*15,25*20*15],即[-7500,7500],但是要使天平保持平衡,<br />一旦平衡度超过3750,或小于-3750,那么剩下的砝码无论原创 2010-08-07 22:40:00 · 1486 阅读 · 0 评论 -
滑雪-PKU ACM 1088
DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的原创 2010-06-03 18:10:00 · 1247 阅读 · 0 评论 -
POJ 2533-Longest Ordered Subsequence 动态规划
<br />题目来源:http://124.205.79.250/JudgeOnline/problem?id=2533<br /> <br />解题报告:<br /> <br />这道题要求最长递增子序列。<br /> <br />由于之前做的POJ 1836中用到的就是求最长递增子序列的思路,所以这道题相对而言就很简单了。<br />设f[i]表示包含a[i]在内的最长递增子序列的长度,则<br /> <br />f[i]=max(1,f[k1]+1, f[k2]+1,..., f[kn]+1),其中,原创 2010-07-24 20:58:00 · 736 阅读 · 0 评论 -
POJ 1260-Pearls 动态规划
<br />题目来源:http://124.205.79.250/JudgeOnline/problem?id=1260<br /> <br />解题报告:<br /> <br />一开始觉得可以用贪心算法,后来发现是不对的,比方说对如下的测试数据:<br />10 10<br />5 15<br />10 23<br />就不行了。还是要用动态规划来解<br /> <br />我设f[k]代表只买前k个,可以花的最少的钱。<br />则<br />f[k]=min( (a1+a2+...+ak+10)*原创 2010-07-24 20:24:00 · 2158 阅读 · 0 评论 -
POJ 3267-The Cow Lexicon 动态规划
<br />题目来源: http://acm.pku.edu.cn/JudgeOnline/problem?id=3267<br /> <br />解题报告: <br /> <br />一道动态规划的题,一开始的思路有些错,看了网上的解题报告后,才理正了思路,看来还是要多做题,纸上得来终觉浅!<br /> <br />这道题求的是某个字符串recmsg,至少删去多少个字符后,剩下的字符串是由dict中的单词可以组成的。<br /> <br />对字符串recmsg[0...L-1],设dp[i]=m,代表r原创 2010-07-11 22:55:00 · 2758 阅读 · 0 评论