动态规划
zzc2227372
这个作者很懒,什么都没留下…
展开
-
POJ2479——动态规划求最大子段
题目大意:求一共序列的两个字段最大和。例如1 -1 2 2 3 -3 4 -4 5 -5In the sample, we choose {2,2,3,-3,4} and {5}, then we can get the answer.答案是 13 分析:在做这道题之前,我们先看看求一序列的最大子段是怎样求的。设a[i]为序列的第i个元素。设b[j]为i...2014-05-27 23:20:40 · 748 阅读 · 0 评论 -
POJ1088,二维动态规划
思路:这是我做的第二道二维数组的动态规划,所以很清楚的知道二维的动态规划递归方程是用dp[][]而不是dp[],所为很容易得到递归公式:dp[i][j]=max(dp[i-1][j],dp[i+1][j],dp[i][j-1],dp[i][j+1]).(在满足条件的情况下),那么我们用个递归函数,里面分别判断(i-1,j)(i+1,j)(i,j-1)(i,j+1)等四个方向是否满足条件(不越界,...2014-06-02 18:18:40 · 224 阅读 · 0 评论 -
乘法表问题
定义于字母表∑{a,b,c)上的乘法表如表1所示 abcabbabcbacacc 依此乘法表,对任一定义于∑上的字符串,适当加括号表达式后得到一个表达式。例如,对于字符串x=bbbba,它的一个加括号表达式为 i(b(bb))(ba)。依乘法表,该表达式的值为a。试设计一个动态规划算法,对任一定义于∑上的...2014-06-05 16:57:15 · 415 阅读 · 2 评论 -
POJ3624-01背包问题
该题就是原版的01背包问题,没有任何改变,唯一需要注意的是需要用到滚动数组,(因为开不了那么大的二维数组),做完这个后在discuss中看到有人贴出的代码只需要一个数组就可以完成,很是有趣,学习了先贴我自己写的滚动数组的代码 #include<iostream>using namespace std;#define len 3500 #define ma...2014-06-05 21:51:39 · 208 阅读 · 0 评论 -
POJ1651-类似矩阵连乘问题
题意:给定n个数,每次取其中一个数(第一个数和最后一个数不能取),得分+=这个数乘以它左边的数和右边的数。要求最后的得分最小。思路:因为开始知道这个题的DP方程和矩阵连乘的DP方程一样,所以一直根据方程想思路,结果想了很久都没想出来,最后看了评论区的大神提示,瞬间想通。看来自己实力还是很渣渣啊。。唉我们假设只有a1,a2,a3三个数,那我们只能取a2,那最后的得分=a1*a2*a3; ...原创 2014-06-13 11:54:51 · 152 阅读 · 0 评论 -
POJ1157-动态规划花瓶插花
题目大意:有f朵花要插到v个花瓶里面去。。。不同的花插到不同的花瓶有不同的美观程度,求最大的美观程度,,还有一个限制条件,如i>j,则编号为i的花能插的花瓶编号也必须大于 编号为j的花所插花瓶的编号。(因为没有注意到这个条件,我想了n久~)。好的我们说思路理解题意后还是比较好写的,这里又有花又有花瓶的,肯定是用二维dp啦。假设dp[i][j],为第i朵花插到第j个瓶子中能获得的最大...2014-06-18 22:11:12 · 387 阅读 · 0 评论 -
POJ1836-LIS变形
给出一个序列,求其最大的先递增后递减序列。采用二分实现,否则会超时,本题的二分很巧妙。注意理解 #include<iostream> using namespace std; #define MAXSIZE 1010 #define MAX(a,b) (a>b?a:b) double a[MAXSIZE]; ...2014-08-20 21:46:01 · 146 阅读 · 0 评论