zoukankan      html  css  js  c++  java
  • 火车进栈(进出栈的模拟,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;
    }
  • 相关阅读:
    数据库——游标
    避免全表扫描的sql优化
    聚合索引(clustered index) / 非聚合索引(nonclustered index)
    [摘抄]Python内置的字符串处理函数整理
    Web 安全渗透方面的学习路线?
    [转载]从关系型数据库到非关系型数据库
    [转载]shell脚本
    关于工具面试题
    ES6之promise
    关于vue-router总结
  • 原文地址:https://www.cnblogs.com/chuliyou/p/12692614.html
Copyright © 2011-2022 走看看