经典dp问题,用dp[i]表示前i个字符解码方案的总数。 显然dp[0]=1(空字符也相当于一种解码方案), 然后从小到大递推计算dp数组,如果当前当前数字不是0(也就是大于等于1小于等于9),则当前字符可以连接在之前所有字符之后成为一个新方案。 当前字符是0是不行的,0不能映射成英文字母。 所以有 ...
分类:
其他好文 时间:
2020-07-18 15:28:18
阅读次数:
64
经典dp问题 class Solution { public int maxValue(int[][] grid) { int m=grid.length,n=grid[0].length; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(i==0&&j ...
分类:
其他好文 时间:
2020-07-15 15:48:57
阅读次数:
52
经典DP问题之最长上升子序列和最长公共子序列 在DP问题中,最长上升子序列(LIS)和最长公共子序列(LCS)无疑是最经典的入门题目,充分体现了DP的思想。 最长上升子序列(LIS) 题目描述 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 示例 input: 7 3 1 2 ...
分类:
其他好文 时间:
2020-06-20 01:00:21
阅读次数:
48
https://leetcode-cn.com/problems/house-robber/ 经典dp问题. /** * 打家劫舍问题,这个是这类问题中最简单的一题 * @param nums * @return */ public int rob(int[] nums) { int length ...
分类:
其他好文 时间:
2020-05-29 09:28:12
阅读次数:
77
经典dp问题,dp[i][j][k][l],i、j代表第一个人的位置,k、l代表第二个人的位置,则列出dp方程,dp[i][j][k][l]=max(dp[i-1][j][k][l-1],dp[i-1][j][k-1][l],dp[i][j-1][k-1][l],dp[i][j-1][k][l-1] ...
分类:
其他好文 时间:
2020-05-22 13:00:30
阅读次数:
64
一个经典的通过增长减小大小来求使得序列单调性的最小代价。 对于这道题,有一个前置题是不要求要严格单调,而是不严格单调 这样的话,我们可以得到一个性质,最后所有的值都是在原序列当中的,这其实用贪心的想法想一想就好,因为一旦通过加减与左边或右边相等,就没必要再加减了 但是本题要求严格,这就很难说了,因此 ...
分类:
其他好文 时间:
2020-04-05 18:13:38
阅读次数:
132
/* dp[i][j][k]表示到了第i颗子弹,cd1=j,cd2=k 的最优解 */ #include<bits/stdc++.h> using namespace std; #define N 1005 int cd1,cd2,n,b[N],dp[5][105][105]; int solve( ...
分类:
其他好文 时间:
2020-03-28 18:05:56
阅读次数:
61
问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数。 ...
分类:
编程语言 时间:
2020-03-16 23:58:45
阅读次数:
123
upd:2019-12-13 题目源自codeforces的Round_602_div1+2, Round_603_div2, Educational_Round_77 Round_603/F: 考虑一个经典dp状态定义, dp[i][j]代表上面一个树的最后一个被选取的叶节点编号是i 下面的树最后 ...
分类:
其他好文 时间:
2019-12-13 21:39:58
阅读次数:
74
一道经典$DP$ LCS $$ f[i][j]=f[i 1][j 1]+1\;(i,j 0,a[i]=b[j])$$ $$ f[i][j]=max(f[i][j 1],f[i 1][j])\;(i,j 0,a[i]\not=b[j])$$ 其中, 为`a i`个元素与 序列前 个元素的$LCS$长度 ...