2014年第五屆藍橋杯JAVA/JAVA++程序設計本科B組決賽 出棧次序(結果填空)

出棧次序

X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。
路邊有個死衚衕,只能容一輛車通過,是臨時的檢查站,如圖【p1.png】所示。
X星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就放行,也可能仔細檢查。
如果車輛進入檢查站和離開的次序可以任意交錯。那麼,該車隊再次上路後,可能的次序有多少種?
爲了方便起見,假設檢查站可容納任意數量的汽車。
顯然,如果車隊只有1輛車,可能次序1種;2輛車可能次序2種;3輛車可能次序5種。
現在足足有16輛車啊,親!需要你計算出可能次序的數目。

題意:求n個元素的出棧情況有多少種。

我們把n個元素的出棧個數的記爲f(n), 那麼對於1,2,3, 我們很容易得出:

                                    f(1)= 1     //即 1

                                    f(2)= 2     //即 12、21

                                    f(3)= 5     //即 123、132、213、321、231
 

public class lq {
    public static void main(String[] args) {
        System.out.println(f(3,0));
    }
    //a表示左邊車的數目
    //b表示棧中車的數目
    private static int  f(int a ,int b ) {
        if(a==0) return 1;
        if(b==0) return f(a-1,1);
        return f(a-1,b+1)+f(a,b-1);
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章