DP
rainysky7
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划最大公共子序列递推式以hdu1243为例
首先设序列A{a1,a2,a3,a4,a5……,an},序列B{b1,b2,b3,b4…….,bn}。Les(x,y)表示序列A{a1,a2,a3,a4,a5……,ax}和序列B{b1,b2,b3,b4…….,by}的最大公共子序列长度。 并且设一个最大公共子序列为t 则当ax==by时,就确定了ax,by一定是属于最大公共子序列中的元素,所以Les(x,y)=Les(x-1,y-1)+1 a...原创 2018-08-12 22:37:41 · 308 阅读 · 0 评论 -
最优子结构与记忆化搜索
源于对算法竞赛一书的理解 最优子结构:先来看一个数塔 从最顶部的结点出发,每次可以向左或者向右走一格,走到最底部时把沿途经历的结点全部加起来,如何走才能和最大。 可以用一个二维数组a(i,j)记录这张数塔图,每一个结点的位置(i,j),都可以看作是一个状态,则从当前状态出发,下一个状态可以是(i+1,j)或者是(i+1,j+1),而题目就是求从状态(0,0)出发,不断的状态进行转移,转移到最...原创 2018-08-22 21:43:45 · 429 阅读 · 0 评论 -
DAG上的最长路
最长路问题分为两种: 1.求整个DAG上的最长路(不固定起点和终点) 2.固定终点 ,求DAG上的最长路 首先看第一种,用dp[i]来代表从i结点出发能到达的最长路长度。i结点可以到达j1,j2,j3…….jk结点,则dp[i]=max(dp[i],map[i,j]+dp[j]),(j=j1,j2,j3…..jk)map[i][j]代表i,j两结点间的长度。如何用代码来实现啦。 int D...翻译 2018-08-23 16:08:41 · 1014 阅读 · 0 评论 -
hdu1213
设有一个序列(a1,a2,a3,a4…….,ak)最长连续子序列肯定是以其中一个ai结尾,所以我们就把每一个以ai(i=1,2,3,4…..,k)结尾的最长连续子序列计算出来,最后我们for循环从1到k枚举dp【i】,(这里dp[i]是指以a[i]结尾的最长连续子序列和)就可以得出最长连续子序列的和了,求解dp[i]的递推公式,dp[i]=max(dp[i-1]+num[i],num[i]);以h...原创 2018-08-21 11:41:11 · 274 阅读 · 0 评论 -
Dijkstra算法
问题描述:从一个顶点出发到达另一个顶点所经过边的权重和最小的路径,称为最短路径。 算法详解: 1.声明两个集合,S,U;S集合中放已算出最短路径的点,(初始时,S集合中只有顶点V1)。U集合中放尚未确定最短路径的点。 2.在声明一个数组dis【】记录顶点V1到各个点之间的初始距离,dis[0]表示V1到V1的距离,记dis[0]=0,dis[1]表示V1到V2的距离,如果V1和某个顶点Vk之...翻译 2018-08-25 12:55:22 · 225 阅读 · 0 评论
分享