一、基本思想 与分治法相似,基本思想,将求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 但是它们也有很大的不同之处,即适用于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。 二、设计步骤 动态规划法适用于最优化问题,通常可按以下4个步骤设计: 1)找出最 ...
分类:
编程语言 时间:
2019-11-04 13:11:10
阅读次数:
90
1 Floyd算法 1.1 Code 1.2 Output 2 参考文献 + 《数据结构(C语言版/ 严蔚敏 李冬梅 吴伟民 编)》 ...
分类:
编程语言 时间:
2019-09-30 14:21:15
阅读次数:
147
300. 最长上升子序列 题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为?$O(n^2)$ 。 进阶: 你能将算法的时间复杂度降低到 O(nlogn) 吗? 思路 动态规划法 第 ...
分类:
其他好文 时间:
2019-09-11 21:52:22
阅读次数:
82
分享会之动态规划 一、简介 有这样一种具有特殊性的过程,其可以将被分成若干相互联系的阶段,在它的每个阶段都要做出决策,从而使整个过程达到最好的活动效果。但各个阶段决策的选取不是任意的,依赖于当前面临的状态,又影响以后的发展,当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路 ...
分类:
其他好文 时间:
2019-05-16 09:15:39
阅读次数:
134
问题描述 对于一串数A={a1a2a3…an},它的子序列为S={s1s2s3…sn},满足{s1<s2<s3<…<sm}。求A的最长子序列的长度。 动态规划法 算法描述: 设数串的长度为n,L[i]为以第i个数为末尾的最长上升子序列的长度,a[i]为数串的第i个数。 L[i]的计算方法为:从前i- ...
分类:
其他好文 时间:
2019-01-16 22:43:42
阅读次数:
259
一、动态规划 状态转移方程: 算法: 例子: 例:0-1背包问题。在使用动态规划算法求解0-1背包问题时,使用二维数组m[i][j]存储背包剩余容量为j,可选物品为i、i+1、……、n时0-1背包问题的最优值。绘制 重量数组w = {4, 6, 2, 2, 5, 1}, 价值数组v = {8, 10 ...
分类:
其他好文 时间:
2018-12-28 17:17:38
阅读次数:
252
编辑距离问题 什么是两个字符串的编辑距离(edit distance)?给定字符串s1和s2,以及在s1上的如下操作: 插入(Insert)一个字符 移除(Remove)一个字符 替换(Replace)一个字符 试问最小需要多少次这样的操作才能使得s1转换为s2? &emsp ...
分类:
其他好文 时间:
2018-12-27 12:01:35
阅读次数:
176
#include <iostream> #include<ctime>#define Num 10000using namespace std; int DTGH_Sum(int a[],int n) //动态规划法求子段和函数{ int sum = 0; int *b = (int *) mall ...
分类:
编程语言 时间:
2018-11-04 19:10:17
阅读次数:
170
一、要求: (1)输入一个整形数组,数组里有正数也有负数。 (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 (3)如果数组A[0]……A[j-1]首尾相邻,允许A[i-1],......A[n-1], A[0]……A[j-1]之和最大。 二、设计思想: 如果数组首尾相连,那么 ...
分类:
编程语言 时间:
2018-11-04 17:04:41
阅读次数:
185