带点注释
2024-06-18 19:57:11
发布于:湖北
6阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,rt[1010],ct[1010];
cin >> n >> m;
for (int i = 0 ; i < n;i++){
cin >> rt[i]; //火车入站顺序rt
}
for (int i = 0 ; i < m;i++){ // 有m组出站顺序就执行m轮
for (int k = 0 ; k < n; k++){
cin >> ct[k]; //火车出站顺序存入ct
}
stack <int> st;
int sx = 0; //出站序列中下标为0的是第一个出站的
for (int j = 0 ; j < n; j++){
st.push(rt[j]); //按进站顺序将所有火车存入栈中
while(st.top()==ct[sx]){ //只要栈顶等于出站序列对应的元素就不断出栈
st.pop(); //删除栈顶元素
sx += 1; //出站序列选中下一辆车
if(st.empty()){ //如栈为空退出 出栈的while循环
break;
}
}
}
if(st.empty()){
cout <<"Yes"<<endl;
}else{
cout << "No"<<endl;
}
}
}
这里空空如也
有帮助,赞一个