文章

4

粉丝

0

获赞

1

访问

107

头像
巨人排队 题解:c代码,有解析
P1677 中南大学2017年机试题
发布于2025年3月11日 21:05
阅读数 26


#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;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发