可能なすべてのアウトスタック順序をインスタック順序に従って出力する(Java)

1219 ワード

例えば、入桟順序が1,2,3であると、出桟順序はそれぞれ1,2,3であってもよい.1,3,2;….
import java.util.Stack; public class ss {
static char[] in={'a','b','c'};

public static void main(String[] args){
    fun(0,new Stack(),"");
}

static void fun(int n, Stack  stk, String sout)
{   
    //System.out.println("    "+n+"    "+"    "+sout);

    if(n == in.length && stk.isEmpty()){//       ,     ,                            
        System.out.println(sout);
    }
    else//         
    {
        Stack s1=(Stack) stk.clone();
        Stack s2=(Stack) stk.clone();
        //    
        if (n <  in.length)//                               
        {
            s1.push(in[n]);//          
            fun(n+1, s1, sout+"");//       
        }
        //     
        if (!s2.isEmpty())//     ,  ,          
        {                                   //            ,          
            String temp=sout+ s2.peek();//      
            s2.pop();//  
            fun(n, s2, temp);
        }
    }
}

}