#include <stdio.h>
#include <algorithm>/**最长不增长子序列
dp[i] = max{1, dp[j]+1 | list[j] >= list[i] && j < i}
*/using namespace std;
int list[25];
int dp[25];int main()
{
int n;
while(~scanf("%d", &n))
{
for(int i = 0; i < n; i++)
scanf("%d", &list[i]);
int tmax;
for(int i = 0; i < n; i++)
{
tmax = 1;
for(int j = 0; j < i; j++) //遍历所有标号小于i的j,取最大值
if(list[j] >= list[i])
tmax = max(tmax, dp[j]+1);
dp[i] = tmax;
}
int ans = 0;
for(int i = 0; i < n; i++)
ans = max(ans, dp[i]);
printf("%d\n", ans);
}
return 0;
}
OpenJ_Bailian - 2945-拦截导弹(最长增长子序列)
最新推荐文章于 2020-01-27 21:04:05 发布