1 条题解

  • 0
    @ 2026-1-28 10:43:24
    #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
    上传者