求助dalao 代码为啥有错?
  • 板块灌水区
  • 楼主fjitro
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/21 22:36
  • 上次更新2024/5/22 13:56:20
查看原帖
求助dalao 代码为啥有错?
958778
fjitro楼主2024/5/21 22:36

天使城有一个火车站,每辆火车都从A方向驶入车站,

再从B方向驶出车站。

为了调度火车,火车站设有停放轨道,可存放5辆火车。已知从A进入车站顺序为1、2、3……。现在给你一个调度方案,判断是否可行,如果可行,输出出站顺序。

有以下几种调度方法:

A. 将A上的头一辆车驶出B方向

B. 将A上的头一辆车停入暂停轨道

C. 将暂停轨道上最外面的车驶出B方向

输入描述

输入第一行一个整数N(n<30)表示调度方案步骤数目。

下一行一个字符串,有N个大写字母,表示调度方法。

输出描述

输出若不可行(暂停站满了还停车、暂停站空了还出车),则输出一行“No”。

若可行,输出一行“Yes”,再输出若干行,每行一个整数,表示车出站序列

#include<iostream>
using namespace std;
int top=-1;
int st[100]={0};
void clear(){
    top =-1;
}
int size(){
    return top+1;
}
bool empty(){
    if(top=-1){
        return true;
    }
    else{
        return false;
    }
}
void push(int x){
    st[++top]=x;
}
void pop(){
    top--;
}
int topp(){
    return st[top];
}
int main(){
    int n;
    cin>>n;
    int u=1;
    int o=0;
    int a[100]={0};
    for(int i=0;i<n;i++){
        char m;
        cin>>m;
        if(m=='A'){
            a[o++]=u;
            u++;
        }
        else if(m=='B'){
            if(size()==5){
                cout<<"No";
                return 0;
            }
            else{
                push(u);
                u++;
            }
        }
        else{
            if(empty()){
                cout<<"No";
                return 0;
            }
            else{
                pop();
                a[o++]=u;
                u++;
            }
        }
    }
    cout<<"Yes"<<endl;
    for(int i=0;i<u-1;i++){
        cout<<a[i]<<endl;
    }
}
2024/5/21 22:36
加载中...