给定入栈序列1、2、3、4、5,输出所有的出栈序列和总数

给定入栈序列1、2、3、4、5,输出所有的出栈序列和总数。总共有多少总出栈序列比较简单,catalan数。所有的出栈序列:对于每一个将要入栈的数而言都存在两种情况,出栈和入栈,由此我们很容易想到递归。下面就是使用递归输出所有的序列。主要思路就是:对于每一次递归都存在两种可能,出栈和入栈,入栈需要判断是否所有的数字都已经入栈了,出栈需要判断当前栈是否为空,当所有的数都已经进入过栈了,那么打印出栈序列,中间出栈序列使用中间变量outSer记录,最后的出栈序列就是outSer+栈中的序列。

import java.util.Iterator;
import java.util.Vector;

/**
 * 入栈序列1、2、3、4、5,所有的出栈序列
 * 每一次递归的时候有入栈和出栈两个选择,当所有的数都已经入栈后,打印序列,
 */
public class OutStackSeries {
	
	public Vector<String> vector = new Vector<>();//用vector代替栈,方便打印
	public final int N = 5;
	public static int total = 0;
	
	/**
	 * count 下一个要入栈的数
	 * vector 当前栈内数字
	 * outSer 中间弹出序列
	 */
	public void recur(int count,Vector<String> vector,String outSer){
		if(count<=N){//仍然有没有入栈的数字,入栈
			String str = new String(count+"");
			
			vector.add(str);
			count&#
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值