1 条题解
-
0
#include<bits/stdc++.h> using namespace std; // [1] arr数组-存储目标车厢序列(编组后的车厢顺序),最多支持200个车厢 int arr[200]; int main() { // [2] n-车厢的总数(输入的正整数,n≤100) int n; cin>>n; // [3] 读取目标车厢序列,存入arr数组 for(int i=0;i<n;i++) cin>>arr[i]; // [4] j-当前待进栈的车厢编号(初始为1,因为车厢编号从1开始递增) int j=1; // [5] s-模拟编组站的栈,用于存储进栈的车厢 stack<int> s; // [6] 外层循环:遍历目标序列的每个车厢(arr[i]是当前需要出栈的目标车厢) for(int i=0;i<n;i++){ // [7] 内层循环:当目标车厢编号 >= 当前待进栈的j时,将j到arr[i]的车厢依次进栈 // 保证目标车厢arr[i]进入栈中,为后续出栈做准备 while(arr[i]>=j){ s.push(j); // 车厢j进栈 cout<<"A"; // 输出进栈操作A j++; // 下一个待进栈的车厢编号递增 } // [8] 条件判断:如果栈不为空,且栈顶元素等于当前目标车厢,则出栈 if(!s.empty() && arr[i]==s.top()){ s.pop(); // 栈顶车厢出栈 cout<<"B"; // 输出出栈操作B } } return 0; }
- 1
信息
- ID
- 1261
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者