直接上码,边看边解释
#include <bits/stdc++.h>
using namespace std;
int main(){
stack <int> s;//创建一个栈——s
char fa;
int n,num[200];
cin >> n;
int j = 0;//拟定一个下标
int k = 1;//设置进入车辆的编号
for (int i = 0; i<n; i++){
//输入操作名
cin >> fa;
if (s.size() == 0 && fa == 'C'){
cout << "No";
return 0;
}
else if (s.size() == 5 && fa == 'B'){
cout << "No";
return 0;
}//进行运行判断,当栈为空时进行删除,输出No;当栈为满时,进行添加,输出No;并结束程序
if (fa == 'A'){
num[j] = k;
j++;
k++;
}//对应操作,用num数组保存输出,下标和编号均增大1
else if (fa == 'B'){
s.push(k);
k++;
}//对应操作,将编号入栈,编号加1
else if (fa == 'C'){
num[j] = s.top();
s.pop();
j++;
}//对应操作,将编号出栈并保存至数组num,下标加1
}
cout << "Yes" << endl;
for (int i = 0; i<j; i++){
cout << num[i] << endl;
}//将保存的编号输出
while(!s.empty()){
cout << s.top() << endl;
s.pop();
}//将栈内剩余的编号输出
return 0;
}
用了一种笨方法
如有更好建议,请留下评论,感谢提点