动态规划
文章平均质量分 83
好大的小飞虫
勤学似春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏
展开
-
动态规划——能否合成字符串
前言 为什么写这篇博文 我相信每一个程序猿都梦想过gg这种大厂,所以,算法都是必不可少的。 目前刷的所有题目里面,其中动态规划是最难的一种了。想运用好动态规划,不是一件简单的事,动态规划有两个点很重要: 1.结果能否拆分成子项,或者说,结果是否有前一个过程完全决定。 2.动态转移方程。 下面看几个实际的例子。 题目 题意 这个题目是这样的,给定两个字符串s1和s2,再给定一个字符串s3,问由前两个...原创 2020-03-31 19:48:50 · 286 阅读 · 0 评论 -
面试算法题总结——动态规划小结2
动态规划是是我目前觉得遇见的最难的题目了。说起来到处都有他,但是真正用的时候,如果变个形状,又很难想到动态方程。所以,目前的动态规划,还是要多总结,找到思路。 抛砖迎玉,先来说个简单的:上台阶问题。现在有一层楼梯,共n层台阶。每次上台阶,可以上1层或者2层,问一共有多少层走完楼梯的方案。 这个题应该都很熟悉,很明显这个是斐波那契数列。怎么推算出来,这是个斐波那契数列的呢? 假设我站在第...原创 2018-04-15 21:24:07 · 191 阅读 · 0 评论 -
动态规划小结1
经典二维动态规划 二维动态规划很常见,笔试中最经常考。特点是随机选取一系列位置,即不连续。 LCS(最长公共子序列问题,O(n^2)) 题目描述:给两个字符串L和S,求出其中最长的公共子序列(可以不连续) 思路:这是典型的动态规划,有好几种变形。 毋庸置疑,当前状态肯定可以由上一状态得出。 楼主喜欢在动态规划中先确定i,j,dp[i][j]表示的含义 在这里是i表示使用L中到第i...原创 2017-09-10 12:44:10 · 350 阅读 · 0 评论 -
面试算法总结:动态规划3
这里再来两个动态规划的经典题目。 题目一:一维数组的最大连续子序列。 这哥可以说是动态规划入门了,主要就是运用了‘0’,这个不多说,直接上代码。 int max = Integer.MIN_VALUE; dp[0] = a[0]; for(int i=1;i<n;i++){ if(dp[i-1]<0){ dp[i] = a[i]; }else...原创 2018-04-18 00:37:25 · 142 阅读 · 0 评论