博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Catalan数与出栈顺序个数,Java编程模拟
阅读量:6335 次
发布时间:2019-06-22

本文共 1311 字,大约阅读时间需要 4 分钟。

问题描述:

队列中有从1到7(由小到大排列)的7个整数,问经过一个整数栈后,出栈的所有排列数有多少? 如果整数栈的容量是4(栈最多能容纳4个整数),那么出栈的排列数又是多少?

分析:对于每一个数字i, 在它入栈之前都有 i - 1 个数字通过栈到输出队列out(不用考虑这i - 1个数字的进出栈顺序,因为可以把它们抽象成f(i - 1)), 在它之后又有 n - i个 数字入栈然后出栈(同样不需要考虑它们的进出栈顺序),这样就得到对每个最后出栈的整数i,它都有f(i - 1)*f(n - i)种出栈顺序,求和就是n个数字顺序经过栈的出栈顺序了。

public class Catalan {    public static int answers = 0;    //请实现go函数    public static void go(Deque from, Deque to, Stack s) {        if(from.size() == 0 && s.empty()) {            answers++;        }        else{            Stack s1 = s.clone();            Stack s2 = s.clone();           // Deque from1 = from.clone();           // Deque from2 = from.clone();            if(from.size() != 0)            {                s1.push(from.getFirst());                from.removeFirst();                go(from, to , s1);                from.addFirst(s1.pop());            }            if(!s2.empty())            {                to.addLast(s2.pop());                go(from, to , s2);            }        }    }    public static void main(String[] args) {        Deque from = new Deque();        Deque to = new Deque();        Stack s = new Stack();        for(int i=1;i<=7;i++) {            from.addLast(i);        }        go(from, to, s);        System.out.println(answers);    }}

转载于:https://www.cnblogs.com/zhangyue123/p/9276811.html

你可能感兴趣的文章
struts2.1 struts.devMode BUG解决方案
查看>>
日本法院裁定三星诉苹果专利侵权案败诉
查看>>
Windows Server 2012R2 桌面体验问题直通车
查看>>
Springboot配置文件读取报错Configuration property name 'projectUrl' is not valid:
查看>>
HTTP状态码
查看>>
今天的学习
查看>>
面试必问之JVM原理
查看>>
mysql主主同步+Keepalived
查看>>
java位移运算符 转
查看>>
转:strcpy实现的考察要点
查看>>
【转】Map/Reduce简介
查看>>
LOB
查看>>
js验证姓名和身份证号
查看>>
Solr空格默认值是AND还是OR
查看>>
(转)SQL SERVER 生成建表脚本
查看>>
对 Java Integer.valueOf() 的一些了解
查看>>
253:Cube painting
查看>>
2016 年 Java 工具和技术的调查:IDEA 已超过
查看>>
Robot Framework学习笔记(十)------Selenium2Library库
查看>>
openssl 自建CA签发证书 网站https的ssl通信
查看>>