zoukankan      html  css  js  c++  java
  • 进出栈序列问题

    背景

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

    描述

    有n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从西方出去,而且每列火车必须进站,先进后出。
    (某生:不就是个栈吗?每次可以让右侧头火车进栈,或者让栈顶火车出站?
    老师:闭嘴!)
    就像这样:

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

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

    输入格式

    一个整数 n<=20

    输出格式

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

    样例输入

    3

    样例输出

    123

    132

    213

    231

    321

    • 每次访问只有出栈或者进栈两种选择
    • 每次操作之后进行下一次搜索,但是搜索完成之后要及时消除影响
    int k=0;
    int n;
    int len=1,a[21];
    void dfs(stack<int> s,int num)
    {
    	if(k==20)
    		return;
    	if(num==n+1)
    	{
    		for(int i=1;i<len;i++)cout<<a[i];
    		while(!s.empty())
    		{
    			cout<<s.top();
    			s.pop();
    		}
    		cout<<endl;
    		k++;
    		return;
    	}
    	if(!s.empty())
    	{
    		a[len++] = s.top(),s.pop();
    		dfs(s,num);
    		s.push(a[--len]);
    	}
    	s.push(num);
    	dfs(s,num+1);
    }
    int main() 
    {
       	cin>>n;
       	stack<int> s;
       	dfs(s,1);
        return 0;
    }
    
  • 相关阅读:
    jQuery自定义选项卡插件
    jQuery委托事件delegate()方法
    发布/订阅模式
    Node.js + Nginx WNMP 多域名 多端口 反向代理
    让Nginx支持apk、ipa文件下载
    jQuery中bind方法传参
    Http协议详解
    vuecli2.X环境搭建
    vue绑定属性、绑定class及绑定style
    vue数据渲染、条件判断及列表循环
  • 原文地址:https://www.cnblogs.com/1625--H/p/9475866.html
Copyright © 2011-2022 走看看