第五屆藍橋杯決賽C\C++B組——出棧次序

來源:互聯網
上載者:User

標籤:

第一部分:題目

出棧次序

X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。

路邊有個死胡同,只能容一輛車通過,是臨時的檢查站。

X星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就允許存取,也可能仔細檢查。

如果車輛進入檢查站和離開的次序可以任意交錯。那麼,該車隊再次上路後,可能的次序有多少種?

為了方便起見,假設檢查站可容納任意數量的汽車。

顯然,如果車隊只有1輛車,可能次序1種;2輛車可能次序2種;3輛車可能次序5種。

現在足足有16輛車啊,親!需要你計算出可能次序的數目。

這是一個整數,請通過瀏覽器提交答案,不要填寫任何多餘的內容(比如說明性文字)。

第二部分:思路

檢查站在一個只能容一輛車通過的死胡同內,可以看出這就是一個棧,先進後出。當然在下一輛車進入之前,胡同(棧)中的車可以出也可以不出。該車隊再次上路後,可能的次序有多少種,就是計算卡特蘭數。什麼是卡特蘭數呢?卡特蘭數:就是n個數按照1~n的順序進棧,出棧後所有排列的總數。(不理解可以查閱相關資料。)卡特蘭數滿足一個遞推公式:h[1]=1;h[n]=h[n-1]*(4*n-2)/(n+1).其中n表示數的個數。最好記住這個公式。

第三部分:代碼

#include<stdio.h>int main(){    int n,h[20];    h[1]=1;    for(n=2;n<=16;n++)    {        h[n]=h[n-1]*(4*n-2)/(n+1);//數組儲存     }    printf("%d\n",h[n-1]);    return 0;}

 

第五屆藍橋杯決賽C\C++B組——出棧次序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.