百个经典动态规划转移方程
第6章动态规划

第6章 动态规划动态规划(Dynamic Programming )是解决多阶段决策过程最优化的一种有用的数学方法。
它是由美国学者Richard .Bellman 在1951年提出的,1957年他的专著《动态规划》一书问世,标志着运筹学的一个重要分支-动态规划的诞生.动态规划也是一种将多变量问题转化为单变量问题的一种方法。
在动态规划中,把困难的多阶段决策问题变换成一系列相互联系的比较容易的单阶段问题一个个地求解。
动态规划是考察解决问题的一种途径 ,而不是一种特殊的算法,不像线性规划那样有统一的数学模型和算法(如单纯形法).事实上,在运用其解决问题的过程中还需要运用其它的优化算法。
因此,动态规划不像其它方法局限于解决某一类问题,它可以解决各类多阶段决策问题。
动态规划在工程技术、经济管理等社会各个领域都有着广泛的应用,并且获得了显著的效果。
在经济管理方面,动态规划可以用来解决最优路径问题、资源分配问题、生产调度问题、库存管理问题、排序问题、设备更新问题以及生产过程最优控制问题等,是经济管理中一种重要的决策技术。
许多规划问题用动态规划的方法来处理,常比线性规划或非线性规划更有效。
特别是对于离散的问题,由于解析数学无法发挥作用,动态规划便成为了一种非常有用的工具。
动态规划可以按照决策过程的演变是否确定分为确定性动态规划和随机性动态规划;也可以按照决策变量的取值是否连续分为连续性动态规划和离散性动态规划。
本教材主要介绍动态规划的基本概念、理论和方法,并通过典型的案例说明这些理论和方法的应用。
6.1动态规划的基本理论6.1.1多阶段决策过程的数学描述有这样一类活动过程,其整个过程可分为若干相互联系的阶段,每一阶段都要作出相应的决策,以使整个过程达到最佳的活动效果。
任何一个阶段(stage ,即决策点)都是由输入(input )、决策(decision )、状态转移律(transformation function )和输出(output )构成的,如图6-1(a )所示.其中输入和输出也称为状态(state ),输入称为输入状态,输出称为输出状态。
程蓓-动态规划

动态规划Dynamic ProgrammingChapter 1 基本概念、性质 §1.1 动态规划简介● 对于一个多阶段策略问题,各个阶段所采取的策略一般来说是与时间有关的,决策依赖于当前的状态,又随即引起状态的转移,一个决策序列就是在变化中产生的,故有“动态”的含义。
● 但是一些与时间没有关系的静态规划(如线性规划、非线性规划等)问题,只要人为的引进充当“时间”的因素,也可以将其视为多阶段决策问题,用动态规划的方法来处理。
● 动态规划大约产生于上世纪50年代,由美国数学家R.Bellman 等人提出。
● 动态规划作为求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊的算法。
● 动态规划模型的分类,根据多阶段决策过程的时间参量是离散的还是连续的变量,过程分为离散决策过程和连续决策过程。
根据决策过程的演变是确定性的还是随机性的,过程又可以分为确定性决策过程和随机性决策过程,组合起来就有离散确定性、离散随机性、连续确定性、连续随机性四种决策过程模型。
§1.2引例例1.1 最短路径问题图1.1表示从起点A 到终点E 之间各点的距离。
求A 到E 的最短路径。
决策● 用穷举法如果从A 到C 的站点有k 个,则总共有3k-1×2条路径。
用穷举法求最短路径总共要进行(k+1)3k-1×2次加法,3k-1×2-1次比较。
当k 的值增加时,需要进行的加法和比较的次数将迅速增加。
例如当k=10时,加法次数为433026次,比较39365次。
● 将以上求从A 到E 的最短路径问题,转化为三个性质完全相同,但规模较小的子问题,即分别从B 1、B 2、B 3到E 的最短路径问题。
最终结果示意图: 以上过程,仅用了18次加法,11次比较,计算效率远高于穷举法。
图1.1图1.2§1.3 动态规划的基本概念、性质最短路径问题●动态规划问题具有以下基本特征:1、问题具有多阶段决策的特征。
经典数塔问题(动态规划)

经典数塔问题(动态规划)有形如下图所⽰的数塔,从顶部出发,在每⼀结点可以选择向左⾛或是向右⾛,⼀直⾛到底层,要求找出⼀条路径,使路径上的值最⼤。
从顶点出发时到底是向左⾛还是向右⾛应取决于向左⾛能取得最⼤值还是向右⾛能取得最⼤值,只有两条路径上的最⼤值求出来了才能做出决策,即dp[1][1] = max(dp[2][1],dp[2][2])故由此推得状态转移⽅程为dp[i] = max(dp[i+1][j],dp[i+1][j+1]);边界条件即最下边⼀层的数据//数塔问题#include<iostream>using namespace std;int main(){int n;int f[100][100] = {0};int dp[100][100] = {0};//状态数组while(cin>>n){memset(f,0,sizeof(f));memset(dp,0,sizeof(dp));//输⼊数塔for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)cin>>f[i][j];//边界,最底下⼀层的数塔dp值等于f值for(int j=1;j<=n;j++)dp[n][j] = f[n][j];for(int i=n-1;i>=1;i--){for(int j=1;j<=i;j++){//状态转移⽅程dp[i][j] = max(dp[i+1][j],dp[i+1][j+1]) + f[i][j];}}cout<<dp[1][1]<<endl;//dp[1][1]即为所求}return0;}。
动态规划解决背包问题和旅行商问题

动态规划解决背包问题和旅行商问题动态规划(Dynamic Programming)是一种解决复杂问题的算法思想,它通过将问题划分为多个子问题,并记录子问题的解来解决原始问题。
在背包问题和旅行商问题中,动态规划是一种常见且高效的解决方法。
1. 背包问题背包问题是一个经典的优化问题,可以用动态规划的方法解决。
给定一组物品,每个物品有自身的价值和重量,同时给定一个背包的容量,要求在不超过背包容量的前提下,选择物品放入背包,使得背包中物品的总价值最大化。
动态规划的思路是定义一个二维数组dp[i][j],其中i表示从第1个到第i个物品,j表示背包的容量。
dp[i][j]表示在前i个物品中,容量为j的背包中能够放入的物品的最大价值。
通过状态转移方程可以求解dp[i][j],其中状态转移方程为:dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + v[i])其中w[i]表示第i个物品的重量,v[i]表示第i个物品的价值。
通过计算dp[i][j],最终可以得到在背包容量为j的情况下的最大价值。
可以通过回溯的方法找到具体放入背包的物品。
2. 旅行商问题旅行商问题是一个典型的组合优化问题,它要求在给定的一组城市中,寻找一条最短的路径使得旅行商经过每个城市一次后返回起始城市。
动态规划可以通过建立一个二维数组dp[S][i]来解决旅行商问题,其中S表示城市的集合,i表示当前所在的城市。
dp[S][i]表示从起始城市出发经过集合S中的城市,最后到达城市i的最短路径长度。
对于dp[S][i],可以通过以下状态转移方程来计算:dp[S][i] = min(dp[S-{i}][j] + d[j][i])其中S-{i}表示从集合S中去除城市i,d[j][i]表示从城市j到城市i的距离。
通过计算dp[S][i],最终可以得到从起始城市出发经过所有城市一次后返回起始城市的最短路径长度。
同样可以通过回溯的方法找到具体的最短路径。
动态规划算法详解及经典例题

动态规划算法详解及经典例题⼀、基本概念(1)⼀种使⽤多阶段决策过程最优的通⽤⽅法。
(2)动态规划过程是:每次决策依赖于当前状态,⼜随即引起状态的转移。
⼀个决策序列就是在变化的状态中产⽣出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
假设问题是由交叠的⼦问题所构成,我们就能够⽤动态规划技术来解决它。
⼀般来说,这种⼦问题出⾃对给定问题求解的递推关系中,这个递推关系包括了同样问题的更⼩⼦问题的解。
动态规划法建议,与其对交叠⼦问题⼀次重新的求解,不如把每⼀个较⼩⼦问题仅仅求解⼀次并把结果记录在表中(动态规划也是空间换时间的)。
这样就能够从表中得到原始问题的解。
(3)动态规划经常常使⽤于解决最优化问题,这些问题多表现为多阶段决策。
关于多阶段决策:在实际中,⼈们经常遇到这样⼀类决策问题,即因为过程的特殊性,能够将决策的全过程根据时间或空间划分若⼲个联系的阶段。
⽽在各阶段中。
⼈们都须要作出⽅案的选择。
我们称之为决策。
⽽且当⼀个阶段的决策之后,经常影响到下⼀个阶段的决策,从⽽影响整个过程的活动。
这样,各个阶段所确定的决策就构成⼀个决策序列,常称之为策略。
因为各个阶段可供选择的决策往往不⽌⼀个。
因⽽就可能有很多决策以供选择,这些可供选择的策略构成⼀个集合,我们称之为同意策略集合(简称策略集合)。
每⼀个策略都对应地确定⼀种活动的效果。
我们假定这个效果能够⽤数量来衡量。
因为不同的策略经常导致不同的效果,因此,怎样在同意策略集合中选择⼀个策略,使其在预定的标准下达到最好的效果。
经常是⼈们所关⼼的问题。
我们称这种策略为最优策略,这类问题就称为多阶段决策问题。
(4)多阶段决策问题举例:机器负荷分配问题某种机器能够在⾼低两种不同的负荷下进⾏⽣产。
在⾼负荷下⽣产时。
产品的年产量g和投⼊⽣产的机器数量x的关系为g=g(x),这时的年完善率为a,即假设年初完善机器数为x,到年终时完善的机器数为a*x(0<a<1);在低负荷下⽣产时,产品的年产量h和投⼊⽣产的机器数量y 的关系为h=h(y)。
Poj动态规划

[1]POJ 动态规划题目列表容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈), 1742, 1887, 1926(马尔科夫矩阵,求平衡), 1936,1952, 1953, 1958, 1959, 1962, 1975, 1989, 2018, 2029,2039, 2063, 2081, 2082,2181, 2184, 2192, 2231, 2279, 2329, 2336, 2346, 2353,2355, 2356, 2385, 2392, 2424,不易:1019,1037, 1080, 1112, 1141, 1170, 1192, 1239, 1655, 1695, 1707,1733(区间减法加并查集), 1737, 1837, 1850, 1920(加强版汉罗塔), 1934(全部最长公共子序列), 1937(计算几何), 1964(最大矩形面积,O(n)算法), 2138, 2151, 2161(烦,没写), 2178,推荐:1015, 1635, 1636(挺好的), 1671, 1682, 1692(优化), 1704, 1717, 1722, 1726, 1732, 1770, 1821, 1853, 1949, 2019, 2127, 2176, 2228, 2287, 2342, 2374, 2378, 2384, 2411状态DP树DP构造最优解四边形不等式单调队列1015 Jury Compromise1029 False coin1036 Gangsters1037 A decorative fence1038 Bugs Integrated, Inc.1042 Gone Fishing1050 To the Max1062 昂贵的聘礼1074 Parallel Expectations1080 Human Gene Functions1088 滑雪1093 Formatting Text1112 Team Them Up!1141 Brackets Sequence1143 Number Game1157 LITTLE SHOP OF FLOWERS1159 Palindrome1160 Post Office1163 The Triangle1170 Shopping Offers1178 Camelot1179 Polygon1180 Batch Scheduling1185 炮兵阵地1187 陨石的秘密1189 钉子和小球1191 棋盘分割1192 最优连通子集1208 The Blocks Problem1239 Increasing Sequences1240 Pre-Post-erous!1276 Cash Machine1293 Duty Free Shop1322 Chocolate1323 Game Prediction1338 Ugly Numbers1390 Blocks1414 Life Line1432 Decoding Morse Sequences 1456 Supermarket1458 Common Subsequence1475 Pushing Boxes1485 Fast Food1505 Copying Books1513 Scheduling Lectures1579 Function Run Fun1609 Tiling Up Blocks1631 Bridging signals 2分+DP NLOGN 1633 Gladiators1635 Subway tree systems1636 Prison rearrangement1644 To Bet or Not To Bet1649 Market Place1651 Multiplication Puzzle1655 Balancing Act1661 Help Jimmy1664 放苹果1671 Rhyme Schemes1682 Clans on the Three Gorges 1690 (Your)((Term)((Project)))1691 Painting A Board1692 Crossed Matchings 1695 Magazine Delivery 1699 Best Sequence1704 Georgia and Bob1707 Sum of powers1712 Flying Stars1714 The Cave1717 Dominoes1718 River Crossing1722 SUBTRACT1726 Tango Tango Insurrection 1732 Phone numbers1733 Parity game1737 Connected Graph1740 A New Stone Game 1742 Coins P1745 Divisibility1770 Special Experiment 1771 Elevator Stopping Plan 1776 Task Sequences1821 Fence1837 Balance1848 Tree1850 Code1853 Cat1874 Trade on Verweggistan 1887 Testing the CATCHER 1889 Package Pricing1920 Towers of Hanoi1926 Pollution1934 Trip1936 All in All1937 Balanced Food1946 Cow Cycling1947 Rebuilding Roads1949 Chores1952 BUY LOW, BUY LOWER 1953 World Cup Noise1958 Strange Towers of Hanoi 1959 Darts1962 Corporative Network 1964 City Game1975 Median Weight Bead 1989 The Cow Lineup2018 Best Cow Fences2019 Cornfields2029 Get Many Persimmon Trees2033 Alphacode2039 To and Fro2047 Concert Hall Scheduling2063 Investment2081 Recaman's Sequence2082 Terrible Sets2084 Game of Connections2127 Greatest Common Increasing Subsequence 2138 Travel Games2151 Check the difficulty of problems2152 Fire2161 Chandelier2176 Folding2178 Heroes Of Might And Magic2181 Jumping Cows2184 Cow Exhibition2192 Zipper2193 Lenny's Lucky Lotto Lists2228 Naptime2231 Moo Volume2279 Mr. Young's Picture Permutations2287 TianJi -- The Horse Racing2288 Islands and Bridges2292 Optimal Keypad2329 Nearest number - 22336 Ferry Loading II2342 Anniversary party2346 Lucky tickets2353 Ministry2355 Railway tickets2356 Find a multiple2374 Fence Obstacle Course2378 Tree Cutting2384 Harder Sokoban Problem2385 Apple Catching2386 Lake Counting2392 Space Elevator2397 Spiderman2411 Mondriaan's Dream2414 Phylogenetic Trees Inherited2424 Flo's Restaurant2430 Lazy Cows2915 Zuma3017 Cut the Sequence3028 Shoot-out3124 The Bookcase3133 Manhattan Wiring3345 Bribing FIPA3375 Network Connection3420 Quad Tiling ?/?cat=5[2]动态规划方法总结1. 按状态类型分写在前面:从状态类型分,并不表示一题只从属于一类。
运筹学第五章动态规划

和 dk 2 (sk ));
(4) 允许决策集: D k ( s k ) ( x k , y k ) 0 ≤ y k ≤ s k ; 0 ≤ x k ≤ 1 0 0 0 ( s k y k )
状态转移方程: s k 1 s k x k y k ,s 1 5 0 0k4,3,2,1
其中s 5 表示第四阶段末的状态; (5) 阶段指标: v k ( s k ,x k ,y k ) q k y k p k x k ,k4,3,2,1;
5.1 动态规划的基本概念和模型
5.1.1 动态规划的基本概念
下面结合实例来介绍动态规划的基本概念:
【例5.1】 如图5.1所示,在处有一水库,现需从点铺设一条 管道到点,弧上的数字表示与其相连的两个地点之间所需修建 的渠道长度,请找出一条由到的修建线路,使得所需修建的渠 道长度最短。
2
A4
3
B
7
(1) 按月份分段: k4,3,2,1;
(2) 状态变量: s k 表示第 k 个月月初的库存量;
(3) 决策变量: dk1(sk表) 示第 k 个月已有库存 s的k 情况下,要定
购的商品量, dk2表(sk示) 第 个月k 已有库存 的商品量(为方便,后面将分别依次用 ,
的 来x sk 情 代k y况 替k 下,要d销k1(售sk )
(6) 动态规划基本方程:
fk(s k) (x k,y m k) a D x k(s k)v k(s k,x k,y k) fk 1 (s k 1 )
f5 (s 5 ) 0 k 4 ,3 ,2 ,1
求解(要求板书) 辅图1
辅图2
辅图3
5.2.3 动态规划的顺序解法
【 例 5.3】 图 5.3 所 示 为 一 水 利 网 络 , A 为 水 库 , 分B 1 ,别B 2 为,B 3 不;C 同1 ,C 的2 ,供C 3 水;D 目1 ,D 的2地,试找出给各供水目的地供水的 最短路线。
贝尔曼方程及其在动态规划中的应用

贝尔曼方程及其在动态规划中的应用动态规划是一种常用的求解最优化问题的方法,它通过将问题划分为子问题,并利用子问题的最优解来求解原问题的最优解。
在动态规划中,贝尔曼方程是一种重要的数学工具,它用于描述最优化问题的最优解与子问题的关系。
本文将介绍贝尔曼方程的概念、推导过程以及在动态规划中的应用。
一、贝尔曼方程的概念贝尔曼方程是由美国数学家理查德·贝尔曼(Richard Bellman)于20世纪50年代提出的,它是动态规划算法的理论基础之一。
贝尔曼方程用数学的方式描述了最优化问题的最优解与子问题的关系,是动态规划算法的核心思想之一。
贝尔曼方程的一般形式如下:V(s) = max{R(s, a) + γ * Σ P(s'|s, a) * V(s')}其中,V(s)表示状态s的最优值函数,R(s, a)表示在状态s下采取动作a所获得的即时奖励,γ表示折扣因子(0 ≤ γ ≤ 1),P(s'|s, a)表示从状态s采取动作a转移到状态s'的概率。
贝尔曼方程的含义是,一个状态s的最优值函数等于在该状态下采取所有可能动作a所获得的即时奖励与下一个状态s'的最优值函数的加权和。
通过迭代计算贝尔曼方程,可以逐步求解出问题的最优解。
二、贝尔曼方程的推导过程贝尔曼方程的推导过程相对复杂,这里简单介绍一下。
首先,我们将最优化问题划分为若干个子问题,并定义子问题的最优解为子问题的最优值函数。
然后,我们假设已知子问题的最优值函数,利用贝尔曼方程来递推求解原问题的最优值函数。
具体推导过程如下:1. 初始化所有状态的最优值函数为0,即V(s) = 0,其中s为问题中的任意状态。
2. 逐步迭代计算最优值函数,直到收敛为止。
3. 在每一次迭代中,计算每个状态s的最优值函数V(s)。
4. 对于每个状态s,计算采取所有可能动作a所获得的即时奖励与下一个状态s'的最优值函数的加权和,即max{R(s, a) + γ * Σ P(s'|s, a) * V(s')}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
百个经典动态规划转移方程(Keadin) 1 1. 资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k])
2. 资源问题2 ------01背包问题 F[I,j]:=max(f[i-1,j-v[i]]+w[i],f[i-1,j]);
3. 线性动态规划1 -----朴素最长非降子序列 F[i]:=max{f[j]+1}
4. 剖分问题1 -----石子合并 F[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]);
5. 剖分问题2 -----多边形剖分 F[I,j]:=min(f[i,k]+f[k,j]+a[k]*a[j]*a[i]);
6. 剖分问题3 ------乘积最大 f[i,j]:=max(f[k,j-1]*mult[k,i]);
7. 资源问题3 -----系统可靠性(完全背包) F[i,j]:=max{f[i-1,j-c[i]*k]*P[I,x]}
8. 贪心的动态规划1 -----快餐问题 F[i,j]表示前i条生产线生产j个汉堡,k个薯条所能生产的最多饮料, 则最多套餐ans:=min{j div a,k div b,f[I,j,k] div c} F[i,j,k]:=max{f[i-1,j',k']+(T[i]-(j-j')*p1-(k-k')*p2) div p3}
9. 贪心的动态规划2 -----过河 f[i]=min{{f(i-k)} (not stone[i]) {f(i-k)}+1} (stone[i]); +贪心压缩状态
10. 剖分问题4 -----多边形-讨论的动态规划 F[i,j]:=max{正正 f[I,k]*f[k+1,j]; 负负 g[I,k]*f[k+1,j]; 正负 g[I,k]*f[k+1,j]; 百个经典动态规划转移方程(Keadin) 2 负正 f[I,k]*g[k+1,j];} g为min 11. 树型动态规划1 -----加分二叉树 (从两侧到根结点模型) F[I,j]:=max{f[I,k-1]*f[k+1,j]+c[k]}
12. 树型动态规划2 -----选课 (多叉树转二叉树,自顶向下模型) F[I,j]表示以i为根节点选j门功课得到的最大学分 f[i,j]:=max{f[t[i].l,k]+f[t[i].r,j-k-1]+c[i]}
13. 计数问题1 -----砝码称重 const w:array[1..n] of shortint=(1,2,3,5,10,20); //不同砝码的重量 var a:array [1..n] of integer; //不同砝码的个数 f[0]:=1; 总重量个数(Ans) f[1]:=0; 第一种重量0;
f[f[0]+1]=f[j]+k*w[j]; (1<=i<=n; 1<=j<=f[0]; 1<=k<=a[i];)
14. 递推天地1 ------核电站问题 f[-1]:=1; f[0]:=1; f[i]:=2*f[i-1]-f[i-1-m]
15. 递推天地2 ------数的划分 f[i,j]:=f[i-j,j]+f[i-1,j-1];
16. 最大子矩阵1 -----一最大01子矩阵 f[i,j]:=min(f[i-1,j],v[i,j-1],v[i-1,j-1])+1; ans:=maxvalue(f);
17. 判定性问题1 -----能否被4整除 g[1,0]:=true; g[1,1]:=false; g[1,2]:=false; g[1,3]:=false; g[i,j]:=g[i-1,k] and ((k+a[i,p]) mod 4 = j)
18. 判定性问题2 -----能否被k整除 百个经典动态规划转移方程(Keadin) 3 f[I,j±n[i] mod k]:=f[i-1,j]; -k<=j<=k; 1<=i<=n 20. 线型动态规划2 -----方块消除游戏 f[i,i-1,0]:=0 f[i,j,k]:=max{f[i,j-1,0]+sqr(len(j)+k), f[i,p,k+len[j]]+f[p+1,j-1,0]} ans:=f[1,m,0]
21. 线型动态规划3 -----最长公共子串,LCS问题 f[i,j]={0 (i=0)&(j=0); f[i-1,j-1]+1 (i>0,j>0,x[i]=y[j]); max{f[i,j-1]+f[i-1,j]}} (i>0,j>0,x[i]<>y[j]);
22. 最大子矩阵2 -----最大带权01子矩阵O(n^2*m) 枚举行的起始,压缩进数列,求最大字段和,遇0则清零 f[i]:=max(f[i-1]+a[i],a[i]) readln(n,m); for i:= 1 to n do for j:= 1 to m do read(a[i,j]); ans:=-maxlongint; for i:= 1 to n do begin fillchar(b,sizeof(b),0); fillchar(u,sizeof(u),0); for j:= i to n do begin max:=0; for k:= 1 to m do begin if (a[j,k]<>0) and (not u[k]) then begin inc(b[k],a[j,k]); inc(max,b[k]) end else begin max:=0; u[k]:=true; end; if max>ans then ans:=max; end; end; 百个经典动态规划转移方程(Keadin) 4 end; 23. 资源问题4 -----装箱问题(判定性01背包) f[j]:=(f[j] or f[j-v[i]]);
24. 数字三角形1 -----朴素の数字三角形 f[i,j]:=max(f[i+1,j]+a[I,j],f[i+1,j+1]+a[i,j]);
25. 数字三角形2 -----晴天小猪历险记之Hill 同一阶段上暴力动态规划 if[i,j]:=min(f[i,j-1],f[I,j+1],f[i-1,j],f[i-1,j-1])+a[i,j]
26. 双向动态规划1 数字三角形3 -----小胖办证 f[i,j]:=max(f[i-1,j]+a[i,j],f[i,j-1]+a[i,j],f[i,j+1]+a[i,j])
27. 数字三角形4 -----过河卒 //边界初始化 f[i,j]:=f[i-1,j]+f[i,j-1];
28. 数字三角形5 -----朴素的打砖块 f[i,j,k]:=max(f[i-1,j-k,p]+sum[i,k],f[i,j,k]);
29. 数字三角形6 -----优化的打砖块 f[I,j,k]:=max{g[i-1,j-k,k-1]+sum[I,k]}
30. 线性动态规划3 -----打鼹鼠’ f[i]:=f[j]+1;(abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j])
31. 树形动态规划3 -----贪吃的九头龙 百个经典动态规划转移方程(Keadin) 5 þýüîíì======þýüîíì+-++--+=0))2()0(&)0(())1(&)1((1],[]][,[*]0,[],',[]0,',[]][,[*]1,[],1',[]1,',[min],,[mandjiorjijid
ipiwkdkjjrfjlfipiwkdkjjrfjlfkjif
32. 状态压缩动态规划1 -----炮兵阵地 Max(f[Q*(r+1)+k],g[j]+num[k]) If (map[i] and plan[k]=0) and ((plan[P] or plan[q]) and plan[k]=0)
33. 递推天地3 -----情书抄写员 f[i]:=f[i-1]+k*f[i-2]
34. 递推天地4 -----错位排列 f[i]:=(i-1)(f[i-2]+f[i-1]); f[n]:=n*f[n-1]+(-1)^(n-2);
35. 递推天地5 -----直线分平面最大区域数 f[n]:=f[n-1]+n :=n*(n+1) div 2 + 1;
36. 递推天地6 -----折线分平面最大区域数 f[n]:=(n-1)(2*n-1)+2*n;
37. 递推天地7 -----封闭曲线分平面最大区域数 f[n]:=f[n-1]+2*(n-1) :=sqr(n)-n+2; 38 递推天地8 -----凸多边形分三角形方法数 f[n]:=C(2*n-2,n-1) div n; 对于k边形 f[k]:=C(2*k-4,k-2) div (k-1); //(k>=3)
39 递推天地9 -----Catalan数列一般形式 1,1,2,5,14,42,132 f[n]:=C(2k,k) div (k+1);