思路:
之前的导航系统依然有效。
增加一个数组t,用于记录导航系统数量,将第一个数添加到数组t
如果可以拦截,找t数组上大于且最接近的值进行替换;
如果无法拦截,则增加导航系统,将值添加到数组t末尾。
#include<iostream>
using namespace std;
int main(){
int n[1001],t[1001],i=0,k=0;
while(cin>>n[i]){
i++;
}
t[0]=n[0]; //将第一个数存到t数组
for(int j=1;j<i;j++){ //从第二个开始比较
bool f=1;
int wz; //用于记录位置
int max=40000;
for(int l=0;l<=k;l++){ 找比n[j]大,且大小最接近的一个数
if(t[l]>=n[j]&&t[l]<max){
f=0;
wz=l;
max=t[l];
}
}
if(f){ //如果不存在比n[j]更大的数
k++;
t[k]=n[j]; //t数组添加一个数
}
else{ //如果存在比n[j]更大的数
t[wz]=n[j]; //替换t数组上的值
}
}
cout<<k+1;
return 0;
}