#include<iostream>
#include<cstdio>
using namespace std;
int list[26];
int length[26];//不需要初始化
int max(int x, int y)
{
return (x>=y)?x:y;
}
int main()
{
int k,i,j;
while(cin>>k)
{
for(i=1; i<=k; i++)
{
scanf("%d",&list[i]);
}
for(i=1; i<=k; i++)
{
int nmax = 1;
for(j=1; j<i; j++)
{
if(list[j]>=list[i])
{
nmax = max(nmax, length[j]+1);//大于list[i]的list[j],以list[j]结尾的序列长度+1;
}
}
length[i] = nmax;//所以不需要初始化,<i的x的length已经有数值了
}
int ans = 1;
for(j=1;j<=k;j++)
{
ans = max(ans, length[j]);
}
printf("%d\n",ans);
}
}
/**************************************************************
Problem: 1112
User: hrdjmax2
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
九度 题目1112:拦截导弹 2007年北京大学计算机研究生机试真题 动态规划
最新推荐文章于 2019-10-29 22:02:18 发布