N个数依次进栈,求所有可能的出栈方式
生活随笔
收集整理的這篇文章主要介紹了
N个数依次进栈,求所有可能的出栈方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
import java.util.Arrays;
public class N個數(shù)的出棧方式 {static int flag_count=0;public static void main(String[] args){int N=10;int[] array=new int[N];for(int i=0;i<array.length;i++){array[i]=i+1;}
// countOfoutOfStack(0,0,0,array.length);
// System.out.println(flag_count);outOfStack(0,0,0,new int[N],new int[N],array);}public static void outOfStack(int cur,int curIn,int curOut,int[] inStack_,int[] outStack_,int[] array){//在遞歸中,如果數(shù)組中的元素一直增加,沒有覆蓋,用一個static數(shù)組就可以了//如果有元素的刪除,要用拷貝,太浪費空間了。。還沒想出好方法int[] inStack=Arrays.copyOf(inStack_,inStack_.length);int[] outStack=Arrays.copyOf(outStack_,outStack_.length);
// int[] inStack=inStack_;
// int[] outStack=outStack_;if(curOut==array.length){System.out.print("第"+(++flag_count)+"種: ");for(int a:outStack){System.out.print(a+" ");}System.out.println();return;}if(curIn>0){outStack[curOut]=inStack[curIn-1];outOfStack(cur,curIn-1,curOut+1,inStack,outStack,array);}if (cur<array.length) {inStack[curIn] = array[cur];outOfStack(cur + 1, curIn + 1, curOut, inStack, outStack, array);}}//只計算出棧方式數(shù),不記錄路徑的話public static void countOfoutOfStack(int cur,int curIn,int curOut,int n){if(curOut==n){flag_count++;return;}if(curIn>0){countOfoutOfStack(cur,curIn-1,curOut+1,n);}if (cur<n) {countOfoutOfStack(cur + 1, curIn + 1, curOut, n);}}
}
轉(zhuǎn)載于:https://www.cnblogs.com/frostbelt/archive/2011/09/18/2180788.html
總結(jié)
以上是生活随笔為你收集整理的N个数依次进栈,求所有可能的出栈方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ListView的Columns自适应内
- 下一篇: Chrome开发者工具和Firebug的