一开始 就理解错了题目的意思 一直错 贪心问题 拦截系统又不只是使用一次哇!!
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int dp[400],x,n,i,j,m;
while(cin>>n)
{
dp[1]=0;//用来记录每个最短子序列的最小元素
m=0;//最短序列的个数
for(i=1;i<=n;i++)
{
cin>>x;
for(j=1;j<=m;j++)
{
if(x<=dp[j])//更新最小元素
{
dp[j]=x;
break;
}
}
if(j>m) dp[++m]=x; //如果x比任何一个最小的都打 插入一个新的序列
}
cout<<m<<endl;
}
return 0;
}