问题 有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一直走到底层,要求找出一条路径,使路径上的值最大。 思路 使用动态规划: 从顶点出发,向左走、向右走取决于左边大还是右边大,即 dp[1][1] = max(dp[2][1],dp[2][2]) 看似是自顶向下求解,但是问题 ...
分类:
其他好文 时间:
2020-04-27 22:21:42
阅读次数:
142
最长公共子序列 longest common subsequence,LCS 说明:子序列中的字符与子字符串中的字符不同,它们不需要是连续的,例如: 字符串1:BDCABA;字符串2:ABCBDAB 最长公共子序列长度为4,最长公共子序列是:BCBA 算法求解——动态规划 最优子结构 设两个字符串分 ...
分类:
其他好文 时间:
2020-04-27 22:11:55
阅读次数:
51
为适应大学本科教学,《面向21世纪课程教材·信息管理与信息系统专业教材系列:运筹学(第4版)(本科版)》在《运筹学》(第4版)基础上,吸收广大读者的意见,做了局部调整和修改。全书分为绪论、线性规划与目标规划、整数线性规划与动态规划、图与网络分析、存储论、对策与决策以及启发式方法7篇,着重介绍运筹学的... ...
分类:
其他好文 时间:
2020-04-27 19:10:24
阅读次数:
1517
动态规划之四键键盘 描述 假设你有一个特殊的键盘,包含以下的按键: key 1:(A):在屏幕上打印一个 A key 2:(Ctrl-A):选中整个屏幕 key 3:(Ctrl-C):复制选中区域到缓冲区 key 4:(Ctrl-V):将缓冲区内容输出到上次输入的结束位置,并显示在屏幕上 现在,你只 ...
分类:
其他好文 时间:
2020-04-27 13:43:30
阅读次数:
152
动态规划之博弈问题 描述 你和你的朋友面前有一排石头堆,用一个数组 piles 表示,piles[i] 表示第 i 堆石子有多少个。你们轮流拿石头,一次拿一堆,但是只能拿走最左边或者最右边的石头堆。所有石头被拿完后,谁拥有的石头多,谁获胜。 题目解释: 石头的堆数可以是任意正整数,石头的总数也可以是 ...
分类:
其他好文 时间:
2020-04-27 00:05:08
阅读次数:
107
1.构造回文 题目: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 思路:利用回文的性质,利用动态规划求原字符串和其反串的最大公共子序列。 2.筛选法求素数 算法举例 单源最短路径中的Dijkstra算法 贪婪算法 最小生 ...
分类:
其他好文 时间:
2020-04-26 21:12:30
阅读次数:
58
题目描述: 方法一:动态规划 O(n) class Solution: def constrainedSubsetSum(self, nums, k: int): dp = [0]*len(nums) dp[0] = nums[0] arr = [(nums[0],0)] for i in rang ...
分类:
其他好文 时间:
2020-04-26 18:39:08
阅读次数:
57
一.动态规划基本结构 二.典型例题 2.1 矩阵链 问题:给定一个n个矩阵的矩阵链,矩阵的维度为 (1 ≤ i ≤ n),求一个最优的加括号方案,使得计算矩阵乘积所需要的标量乘法次数最少。 解法:1.穷举法: 定义T(N)是顺序的个数,则T(N)=Σ(i=1,N-1)T(i)T(N-i),有cata ...
分类:
编程语言 时间:
2020-04-25 23:11:42
阅读次数:
85
例1: def ditui(n,m,cx,cy): x=[1,1,2,2,-1,-1,-2,-2] y=[2,-2,1,-1,2,-2,1,-1] d=[[0 for i in range(n+1)]for j in range(m+1)] f=[[0 for i in range(n+1)]for ...
分类:
其他好文 时间:
2020-04-25 17:33:31
阅读次数:
69
爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 不难发现,对于要抵达的第n阶台阶,有两种方式可以抵达。 1. 在第 (i?1) 阶后向上爬 1 阶。 2. 在第 (i 2) 阶后向上爬 2 ...
分类:
其他好文 时间:
2020-04-25 17:04:41
阅读次数:
55