当前位置:   article > 正文

无法吃午餐的学生

无法吃午餐的学生
题目描述

学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。
餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮:

如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。
否则,这名学生会 放弃这个三明治 并回到队列的尾部。
这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。
请你输出无法吃午餐的学生数量

输入

第一行一个n代表学生和三明治的数量;
第二行n个整数,从左至右依次代表队列从队首到队尾学生的喜好;
第三行n个整数,从左至右依次代表从栈底到栈顶每个三明治的形状。

输出
一个整数,代表无法吃午餐的学生数量。

样例输入
6
1 1 1 0 0 1
1 1 0 0 0 1 

样例输出
3

提示

如果队列中每个元素判断过一轮,没有找到匹配的,这时栈中元素数量就是无法吃午餐的学生数量。

#include<bits/stdc++.h>
using namespace std;
int n, t, cnt, len;
queue <int> que;
stack <int>sta;

int main() {
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>t;
        que.push(t);
    }
    for(int i=0; i<n; i++){
        cin>>t;
        sta.push(t);
    }
    len=n;
    while(cnt<len){
        if(sta.top()==que.front()){
            cnt=0;
            sta.pop();
            que.pop();
            len--; 
        }
        else{
            que.push(que.front());
            que.pop();
            cnt++;
        }
    }
    cout<<que.size();
    return 0;
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/137461
推荐阅读
相关标签
  

闽ICP备14008679号