题解 | #火车进站#

火车进站

https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109

#include <any>
#include <iostream>
#include <vector>
using namespace std;

void dfs(int index, vector<int> &in_order, vector<int> &stack, vector<int> &path, vector<vector<int> > &allpath){

    // cout<<"index"<<index;
    // cout<<"stack";
    // for(int i=0; i<stack.size();i++){
    //     cout<<stack[i];
    // }
    // cout<<"path";
    // for(int i=0; i<path.size();i++){
    //     cout<<path[i];
    // }
    // cout<<endl;


    if(stack.size()==0 && index>=in_order.size()){
        allpath.push_back(path);
        return;}

    if(index<in_order.size()){
        stack.push_back(in_order[index]);
        dfs(index+1, in_order, stack, path, allpath);
        stack.pop_back();
    }

    if(stack.size()>0){
        // dfs(index, in_order, stack, path, allpath);
        
        int top = stack.back();
        path.push_back(top);
        stack.pop_back();

        dfs(index, in_order, stack, path, allpath);

        path.pop_back();
        stack.push_back(top);

        
    }

}

int main() {
    int n, temp;
    cin>>n;
    vector<int> stack, in_order, path;
    vector<vector<int> > allpath;

    for(int i=0;i<n;i++){
        cin>>temp;
        in_order.push_back(temp);
    }


    // cout<<"ok"<<endl;

    int index=0;
    dfs(index, in_order, stack, path, allpath);


    for(int i=0; i<allpath.size();i++){
        for(int j=i+1; j<allpath.size();j++){

        for(int k=n-1; k>=0; k--){
        if(allpath[i][k] > allpath[j][k]){

            swap(allpath[i], allpath[j]);

        }else if(allpath[i][k] == allpath[j][k]){

        }}

    }}



    for(int i=0; i<allpath.size();i++){
        for(int j=0; j<allpath[i].size();j++){
            if(j<allpath[i].size()-1){
                cout<<allpath[i][j]<<' ';
            }else{
                cout<<allpath[i][j];
            }
        }

        cout<<endl;
    }

    return 0;
    
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

2025-12-22 15:04
江西农业大学 Web前端
SaviorSu:直接说下学期可以请假,一般情况学校允许我26届,大三就直接去实习了
点赞 评论 收藏
分享
2025-12-18 20:31
湖南大学 客户端其它
饿魔:没人说?我来牛美孩
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务