给定入栈序列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&#