动态规划,俗称DP,是算法进阶中很重要的问题。
解DP题,一般有这么几个步骤:
1.打表,在DP中,打表为了让我们更快的发现规律
2.根据你所列出的规律,写出状态转移方程式,如果状态转移方程写错了,那么一道题的思路就错了。
那么,根据以上DP方法,可以看一道例题:
一个数的序列bibi,当b1<b2<...<bSb1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN)(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK)(ai1,ai2,...,aiK),这里1≤i1<i2<...<iK≤N1≤i1<i2<...<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
求最长上升子序列,可以打出以下表格:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 1 | 2 | 2 | 3 | 4 | 3 | 3 |


1375

被折叠的 条评论
为什么被折叠?



