1 条题解

  • 5
    @ 2022-9-12 18:40:29

    好,这是一道关于队列的题(UP亿不小心做成了栈)心态崩了555~

    好了,思路是这鸭子的:

    队列一般有以下几种操作:

    • 新建:可以和栈一样用一维数组
    • 加入:队列是不能插队的哦只能排后面用数组名[++rear]=某个值
    • 删除:在这UP要提醒大家计算机里的队列只的是队首删除的哦++front

    提示:

    front 代表队首

    rear 代表队尾

    UP是这样写的:

    const int maxn=1000010;
    int rear=0,front=0,a[maxn];
    void add(int x){   //add 中文:添加 
    	a[++rear]=x;
    	for(int j=front;j<=rear;j++){
    		for(int s=j+1;s<=rear;s++){
    			if(a[j]<a[s]){
    				break;
    			}
    			swap(a[j],a[s]);
    		}
    	}
    }
    void mis(){  //minus 中文:减 
    	++front;
    } //完成了队列的基本操作
    

    加了一个排序(这题本来就是要排序的,猜猜看我用的是哪种排序)

    然后是主程序(基本和栈差没多少):

    int main(){
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		char x[11];
    		scanf("%d",&x);
    		if(x[0]=='q'){
    			int k;
    			cin>>k;
    			printf("%d",a[front+k]);
    		}else if(x[1]=='u'){
    			int k;
    			cin>>k;
    			add(k);
    		}else{
    			mis();
    			cout<<a[front]<<endl;
    		}
    	}
    }
    

    题解+程序是UP好不容易写好的点个赞吧👍

    • 1

    信息

    ID
    749
    时间
    1000ms
    内存
    16MiB
    难度
    10
    标签
    递交数
    20
    已通过
    0
    上传者