出棧次序
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);
}
}