文章
4
粉丝
0
获赞
1
访问
107
#include<bits/stdc++.h>
int main(){
int n;
int sum=0;//记录路队数
int temp;
while(scanf("%d",&n)!=EOF){
//输入
int arr[n];
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
}
int temp[n];//一个下标表示一个队列,下标中的元素表示该队列如今的最大值。
//遍历 按照顺序
temp[1]=arr[0];
sum=1;
for(int i=1;i<n;i++){
if(arr[i]>temp[sum]){
sum++;
temp[sum]=arr[i];//比前一个高,新开一个队列;
}else{
//如果不比前面的高,但要更新这个队列现在的值,不然会出现6 4 5,
for(int j=1;j<=sum;j++){
//遍历该值应该放在哪个队列里
if(arr[i]<temp[j]){
temp[j]=arr[i];
break;
}
}
}
}
printf("%d\n",sum);
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发