• 火车进栈(进出栈的模拟,dfs爆搜)


    这里有n列火车将要进站再出站,但是,每列火车只有1节,那就是车头。

    这n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从西方出去,而且每列火车必须进站,先进后出。

    也就是说这个火车站其实就相当于一个栈,每次可以让右侧头火车进栈,或者让栈顶火车出站。

    车站示意如图:

                出站<——    <——进站
                         |车|
                         |站|
                         |__|
    

    现在请你按《字典序》输出前20种可能的出栈方案。

    输入格式

    输入一个整数n,代表火车数量。

    输出格式

    按照《字典序》输出前20种答案,每行一种,不要空格。

    数据范围

    1n201≤n≤20

    输入样例:

    3
    

    输出样例:

    123
    132
    213
    231
    321
    代码如下:
    #include<bits/stdc++.h>
    using namespace std;
    int q[30],p[30];
    int n,k=0,tot=0,st=0;
    void dfs(int step)
    {
        if(step==n+1)
        {
            if(k>=20)return;
            for(int i=1;i<=st;i++)
                printf("%d",q[i]);
            for(int i=tot;i>0;i--)
                printf("%d",p[i]);
            printf("\n");
            k++;
            return;
        }
       if(tot)//先考虑出栈
       {
           q[++st]=p[tot--];
           dfs(step);
           p[++tot]=q[st--];
       }
       p[++tot]=step;//入栈
       dfs(step+1);
       tot--;
        return;
    }
    int main()
    {
        cin>>n;
        dfs(1);
        return 0;
    }
  • 相关阅读:
    Java读写配置文件prop.properties
    java中int转String 固定位数 不足补零
    plantix插件工具,eclipse工具
    MongoDB API java的使用
    CSS定位细节
    Mysql 基于BinaryLog的复制
    Mysql之复制服务
    Linux 中文乱码问题解决
    Maven中手动引用第三方jar包
    innodb之超时参数配置
  • 原文地址:https://www.cnblogs.com/chuliyou/p/12692614.html
Copyright © 2020-2023  润新知