//最长不上升子序列+贪心
#include<iostream>
using namespace std;
int a[1005],f[1005]={0},b[4005]={0};////b数组存拦截系统的最大高度
int main()
{
int t=1,maxn=-99999;
while(scanf("%d",&a[t]))
{
f[t]=1;
t++;
}
t--;
for(int i=1;i<=t;i++)
{
for(int j=1;j<i;j++)
{
if(a[i]<=a[j])
{
f[i]=max(f[i],f[j]+1);
}
}
maxn=max(maxn,f[i]);
}
printf("%d\n",maxn);
int k=1;//使用的导弹拦截系统
b[1]=a[1];//使用新的装置拦截第一个导弹
for(int i=1;i<=t;i++)
{
bool flag=0;
for(int j=1;j<=k;j++)
{
if(b[j]>=a[i])
{
b[j]=a[i];
flag=1;
break;
}
}
if(flag==0)//不能拦截
{
k++;//添加新设备
b[k]=a[i];
}
}
cout<<k<<endl;
return 0;
}
信息学奥赛一本通1260:【例9.4】拦截导弹(Noip1999)这道题,提交上去全都是运行错误,有没有大佬帮忙看看