首先
这道题考的就是动态规划,那我们就一步步先把整体思路梳理出来.
定义状态
根据题目呢,我们能把dp[i]定义为以第i个元素为末尾的不降子序列的长度,第一步就完成了.
动态转移方程
动态转移方程呢,定义好了状态后就可以求出来了,dp[i]其实就是dp[0],dp[1]...dp[i-1]这里面的最大值加上1,也就是加上dp[i]这1个数字的长度,我们知道这些就可以列出状态转移方程:
dp[i]=max(dp[0],dp[1]...dp[i-1])+1
答案处理
最后,我们再新建pre数组,将pre[i]定义为下标为i的元素所在的序列的前一个元素的下标,这样子求出最大的