线性DP 1. 最长上升(不下降)子序列 O(n^2)的基础算法,如果是不下降只用把`f[i] include include include include using namespace std; int n,a[5005],f[5005]; int main() { ios::sync_wit ...
分类:
其他好文 时间:
2020-05-24 11:51:22
阅读次数:
41
示例代码 package DP; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; interface Dao { void sav ...
分类:
其他好文 时间:
2020-05-24 11:30:32
阅读次数:
37
线性DP 最长上升子序列 O(n^2)的基础算法 方程:f[i]=max(f[j]+1) j∈i+1~n ps:每个位置的初始长度都是1!!!! //最长上升序列 #include <iostream> #include <cstring> #include <cstdio> #include <c ...
分类:
其他好文 时间:
2020-05-24 00:43:07
阅读次数:
40
114. 不同的路径 中文English 有一个机器人的位于一个 m × n 个网格左上角。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。 问有多少条不同的路径? 样例 Example 1: Input: n = 1, m = 3 Output: 1 Explanation: ...
分类:
其他好文 时间:
2020-05-24 00:34:31
阅读次数:
60
只有三种情况:全是1,有一个2的,只有一个点的 树形dp求最长的1链,或者带一个2的最长1链即可 #include<bits/stdc++.h> #define rep(i,x,y) for(auto i=(x);i<=(y);++i) #define dep(i,x,y) for(auto i=( ...
分类:
其他好文 时间:
2020-05-24 00:13:52
阅读次数:
54
状态模式: 根据状态决定动作 当动作一定但是状态可扩展适合使用状态模式 当动作变化不适合 当状态不会扩展也没有必要使用使用传统的switch即可。 先看一个没有使用状态模式的例子: package com.srr.dp.state; /** * 我的女朋友有很多种状态 * 当给我的女朋友添加新的状态 ...
分类:
编程语言 时间:
2020-05-23 21:54:52
阅读次数:
67
int MatrixDP(int p[][2],int len ){ //p[i][0]、p[i][1]分别表示p[i]矩阵的行数、列数 int dp[100][100]={0}; for(int range=2;range<=len;++range){ int _begin=0,_end=rang ...
分类:
编程语言 时间:
2020-05-23 18:35:32
阅读次数:
52
状压dp 题意 有一块 m 行 n 列的农场地形,要在 ‘1’ 上养牛,并且相邻上下左右不能同时养牛。 问:有多少种方案来养牛? 思路 先看第一行样例 1 1 1,肯定不能相邻养牛,所以有以下几种情况 0 0 0 0 0 0 1 1 0 1 0 2 1 0 0 4 1 0 1 5 当加上第二行的时候 ...
分类:
其他好文 时间:
2020-05-23 11:43:14
阅读次数:
56
目录 最长公共子序列 编辑距离 最长上升子序列 结合上一篇文章,再继续尝试解决动态规划题目 一、1143. 最长公共子序列 1.1 问题: 给定两个字符串text1 和text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序... ...
分类:
编程语言 时间:
2020-05-23 10:02:05
阅读次数:
67
目录 定义 动态规划的步骤 例题分析 算法对比 总结 一、定义 1.1 定义 把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划 --百度定义 动态规划算法(Dynamic Programming-DP)是通过拆分问题,定义问题状态和状... ...
分类:
编程语言 时间:
2020-05-23 09:37:49
阅读次数:
65