动态规划
漫步小子
这个作者很懒,什么都没留下…
展开
-
动态规划之求最大子矩阵问题
练习了几个星期的动态规划,结果在POJ上随便找些题目还是不会做。。北大POJ1050:求最大子矩阵问题最大子矩阵问题:问题描述:(具体见http://acm.pku.edu.cn/JudgeOnline /showproblem?problem_id=1050)给定一个n*n(0Example:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0原创 2014-01-07 13:45:49 · 769 阅读 · 0 评论 -
动态规划入门之LCS(2)
LICS问题是在最长公共子序列(LCS)基础上,要求还要序列是严格单调递增的。本来是打算在LCS代码的基础上:if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max{dp[i-1][j],dp[i][j-1]};加上控制语句使得序列严格单调递增,但是始终没有想出来。参考网上其他人博客,发现网上千篇一律都是另一种解法。原创 2016-02-11 21:36:34 · 330 阅读 · 0 评论 -
动态规划之石子合并
package com.java.dp;import java.util.Scanner;/** * 围成一圈的石子合并问题 * j-i=d d=0··m * dp[i][j]=max{dp[i][j],dp[i][k]+dp[k+1][j]+cos[i][j]} */public class MergeStone { public static void原创 2014-05-16 11:15:41 · 606 阅读 · 0 评论 -
动态规划入门之嵌套矩形
嵌套矩形描述:有n 个矩形,每个矩形可以用a; b 来描述,表示长和宽。矩形X(a; b) 可以嵌套在矩形Y (c; d)中当且仅当a 但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输入:第一行是一个正整数N(0 个正正数n,表示该组测试数据中含有矩形的个数(n a; b(0 输出:原创 2013-12-28 19:41:23 · 649 阅读 · 0 评论 -
需要先排序的DP-----划分土地
【问题描述】 农夫John准备扩大他的农场,他正在考虑N (1 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. 如果FJ买一块3x5的地和一块5x3的地,则他需要付5x5=25.FJ希望买下所有的土地,但是他发现分组来买这些土地可以节省经费. 他需要你帮助他找到最小的经费.【输入】第1行: 一个原创 2014-03-15 20:22:39 · 625 阅读 · 0 评论 -
动态规划入门之完全背包
完全背包问题(UKP, unbounded knapsack problem):每种物品都有无限个可用 最简单思路就是把完全背包拆分成01背包,就是把01背包中状态转移方程dp[i][j]=dp[i-1][j-w[i]]+v[i]相应的做点修改,也就是说01背包只考虑放与不放进去两种情况,而完全背包要考虑 放0、放1、···、放j/w[i] 的情况。 for (i原创 2013-12-26 14:59:46 · 1790 阅读 · 0 评论 -
动态规划入门之01背包
描述:有N 种物品,第i 种物品的重量为wi,价值为vi,每种物品只有一个。背包能承受的重量为W。将哪些物品装入背包可使这些物品的总重量不超过背包容量,且价值总和最大?输入:第1 行包含一个整数T,表示有T 组测试用例。每组测试用例有3 行,第1 行包含两个整数N;W(N 1000;W 1000) 分别表示物品的种数和背包的容量,第2 行包含N 个整数表示每种物原创 2013-12-26 13:39:55 · 466 阅读 · 0 评论 -
动态规划入门之LCS
求最长公共子序列,可以用典型的动态规划解法,上一篇求字符串编辑距离的dp解法也可以说是由这个案例变形而来。 状态变量: dp[i][j]表示字符串a[i]和字符串b[j]的最长公共子序列 状态转移方程:if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max{dp[i-1][j],dp[i][j-1]};原创 2013-12-24 15:07:12 · 464 阅读 · 0 评论 -
动态规划入门之最大M子段和
求最大M子段,,又是典型的动态规划例题,做起来的第一感觉就是跟前两道题有点不一样。。 状态变量: dp[m][n]表示要取m段,并且最后一段包括a[n-1] 的最大子段和状态转移方程:dp[i][j] = dp[i][j - 1] + a[j - 1]; //a[j-1] 直接加入到第i段中for(原创 2013-12-24 17:47:43 · 766 阅读 · 0 评论 -
动态规划入门
动态规划思路流程:(1)确定问题的决策对象。(2)对决策过程划分阶段。 (3)对各阶段确定状态变量。(4)根据状态变量确定费用函数和目标函数。(5)建立各阶段状态变量的转移过程,确定状态转移方程。 适用条件:任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用。同样,动态规划也并不是万能的。适用动态规划的问题必须满足最优化原理和无后效性。1.最优化原理(原创 2013-12-24 14:48:10 · 551 阅读 · 0 评论 -
动态规划之石子合并(2)
改进后:import java.io.BufferedInputStream;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(new BufferedInputStream(Syste原创 2016-01-30 19:54:20 · 397 阅读 · 0 评论