动态规划 青旅半醒 2022-07-12 05:01 333阅读 0赞 首先是概念:动态规划就是将原问题划分为简单的几个小问题(有点类似与分治法?但是分治法中的各个小问题是相互独立的,彼此之间不会产生影响,但是动态规划中所得的值和前面相关,当前的解由上一个问题推出,受到前面状态的影响) 动态规划解决的步骤: 1.描述最优解的特征 2.递归的定义一个最优解的值 3.自底向上计算最优解的值 4.从已知的信息中构造一个最优解 动态规划求解的一般思路: 判断问题的子结构(也可看作状态),当具有最优子结构时,动态规划可能适用。 求解重叠子问题。一个递归算法不断地调用同一问题,递归可以转化为查表从而利用子问题的解。分治法则不同,每次递归都产生新的问题。 重新构造一个最优解。 动态规划有一种能够变形-备忘录,它具有通常的动态规划方法的效率,又采用了一种自顶向下的策略。 下面通过一个实际的例子来对动态规划思想进行介绍 有1、3、 5面值的硬币若干,如何用最少的硬币凑够11元?首先将这个问题一般化,如何用最少的硬币凑够 i元??并设d(j)=i,这里的d(j)是一个函数,表示最少需要i个硬币就可凑够j元。 当i=0时,j=0;也即d(0)=0;当i=1,j=1,此时d(1)=d(1-1)+1=1,当i=2,j=2,d(2)=d(2-1)+1=2;当i=3,j=1,此时有两种情况:d(3)=d(3-1)+1=3或者d(3)=d(3-3)+1=1,我们选择最优的那一个,故d(3)=min\{d(3-1)+1, d(3-3)+1\}。到这边一个最优解的特征就被描述出来了。下面我们通过程序来实现这个算法。 package cc; public class Main { /** * @param args */ public static void main(String[] args) { int[] a={1,3,5}; int total=11; System.out.println(getamount(a,total)); } private static int getamount(int[] a, int total) { // TODO Auto-generated method stub int min[]=new int[total+1]; min[0]=0; int minCoin=0; for(int i=1;i<min.length;i++){ minCoin=i; for(int j=0;j<a.length;j++){ if(a[j]<=i&&min[i-a[j]]+1<minCoin)//(i-a[j])必定>0 { minCoin=min[i-a[j]]+1; } } min[i]=minCoin; } return min[11]; } }
相关 动态规划 一:概念: 和分冶法相似,不同之处在于前者是把问题划分为互不相交的子问题,而动态规划会出现子问题重叠的情况。通常用来求解最优化问题。。 基本步骤: ①:刻画一个最优 我就是我/ 2022年12月01日 11:51/ 0 赞/ 42 阅读
相关 动态规划 -------------------- 动态规划的设计思想 动态规划(DP)\[1\]通过分解成子问题解决了给定复杂的问题,并存储子问题的结果,以避免再次计算相同的结 柔情只为你懂/ 2022年09月25日 11:15/ 0 赞/ 267 阅读
相关 动态规划 作者:Hawstein 出处: [http://hawstein.com/posts/dp-novice-to-advanced.html][http_hawstein.c 淡淡的烟草味﹌/ 2022年09月24日 12:17/ 0 赞/ 219 阅读
相关 动态规划 1. 首先,动态规划不是一个特定的算法,它代表的是一种思想,一种手段 2. 动态规划方法往往用于求解“最优化问题”,能用动态规划求解的问题的前提是问题具有“最优子结构性质” 刺骨的言语ヽ痛彻心扉/ 2022年07月29日 11:46/ 0 赞/ 114 阅读
相关 动态规划 首先是概念:动态规划就是将原问题划分为简单的几个小问题(有点类似与分治法?但是分治法中的各个小问题是相互独立的,彼此之间不会产生影响,但是动态规划中所得的值和前面相关,当前的解 青旅半醒/ 2022年07月12日 05:01/ 0 赞/ 334 阅读
相关 动态规划 > 给定两个字符串A和B,返回两个字符串的最长公共子序列的长度。例如,A=”1A2C3D4B56”,B=”B1D23CA45B6A”,”123456”或者”12C4B6”都是最 以你之姓@/ 2022年06月07日 00:41/ 0 赞/ 333 阅读
相关 动态规划 基本思想: 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 区别: 与 ゞ 浴缸里的玫瑰/ 2022年05月25日 09:44/ 0 赞/ 459 阅读
相关 动态规划 等我有时间了,一定要把《算法导论》啃完,这本书的印刷质量实在太好了,就是烧脑子,滑稽。 适合应用动态规划求解的最优化问题应该具备两个要素: 最优子结构:一个问题的最优解包含 短命女/ 2022年05月17日 09:45/ 0 赞/ 343 阅读
相关 动态规划 1.题目:最长递增子序列(Longest Increasing Subsequence) 问题描述: > 给定长度为N的数组A,计算A的最长单调递增的子序列(不一定连续) 妖狐艹你老母/ 2022年05月11日 04:56/ 0 赞/ 297 阅读
相关 动态规划 算法题中动态规划是真的难,写一篇总结,彻底解决动态规划。参考:[https://blog.csdn.net/u013309870/article/details/7519359 左手的ㄟ右手/ 2021年11月19日 14:14/ 0 赞/ 521 阅读
还没有评论,来说两句吧...