题目中已告诉最长上升子序列之和!=最大上升子序列之和
动态规划的比较重要的点
1. 拆分成子问题
2. 状态转移方程
(其实动态规划也可以理解为递归的逆过程)
根据这道题来实操一下
-
拆分成子问题
求的是n个数的最大上升子序列之和
则可以拆分成求n-1个数的最大上升子序列之和
以此类推 最后是先求1个数的最大上升子序列之和
//这里是做题自己想
(这里有没有一点递归的味道,1为返回条件)
从求当一个数时到求当两个数时的最大上升子序列之和
以此类推,最后由求当n-1时到当n时的最大上升子序列之和
//这里是程序进行求解
(有没有递归返回去的味道) -
状态转移方程
状态转移方程,是连接两个状态的桥梁
可能这样说比较抽象,结合这道题来理解一下
求当一个数时到求当两个数时的最大上升子序列之和,再到三个数时
简单模拟一下
这里有两个数组int ans[1000+10]={ 0,1,50,20,72};//存储和 int m[1000