题目描述
设有整数序列b1,b2,b3,……,bm, 若存在i1< i2 <i3 <…… <in,且bi1<bi2<bi3……<bin, 则称b1,b2,b3,……,bn,中有长度为N的不下降序列bi1,bi2,bi3,……,bin。求序列b1,b2,b3,……,bm中最大不下降序列的长度。
输入格式
第一行为n,第二行为用空格隔开的n个整数。
输出格式
第一行为输出最大个数max。
输入输出样例
输入 #1
14
13 7 9 16 38 24 37 18 44 19 21 22 63 15
输出 #1
8
思路
最长上升子序列改版,只需做一个小小的改动。
易错点
上升≠不下降
上升是只能越来越大,而不下降是既可以上升,也可以相等。
所以上最长上升子序列的状态转移方程:
if(num[j]<num[i]) f[i]=max(f[i],f[j]+1);
要变为:
if(num[j]<=num[i]) f[i]=max(f[i],f[j]+1);