赞
踩
学校的自助午餐提供圆形和方形的三明治,分别用数字 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;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。