2011-06-11 08:13:37Morris

d887. 1.山脈種類(chain)

內容 :

輸入說明 :

每行有1個數字N(2<=N<=25)

輸出說明 :

請輸出一個整數,表示總步數為2N的山脈共有多少種。

範例輸入 :

34

範例輸出 :

514

提示 :

(1)測資有誤請告知感謝

(2)另外兩題本人都只過了局部測資

請會的人幫忙出吧

出處 :

99北市賽 (管理:leopan0922)



作法 : DP
上山的個數,在過程中,必然大於等於下山的個數
設上山個數A,下山個數B,則A >= B
   我們可以將A看成下圖的往右,B看成往上
最後得到所有路徑必須在紅線下,等效於求左下點到右上點的最短路徑
同時不超過紅線的 DP








/**********************************************************************************/
/*  Problem: d887 "1.山脈種類(chain)" from 99北市賽                        */
/*  Language: C                                                                   */
/*  Result: AC (6ms, 278KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-06-11 07:57:36                                     */
/**********************************************************************************/


#include<stdio.h>
main() {
    int n, a, b;
    while(scanf("%d", &n) == 1) {
        long long DP[27][27] = {0};
        DP[0][1] = 1;
        for(a = 1; a <= n + 1; a++)
            for(b = a; b <= n+1; b++)
                DP[a][b] = DP[a-1][b] + DP[a][b-1];
        printf("%lld\n", DP[n+1][n+1]);
    }
    return 0;
}
Tim 2015-01-25 18:32:03

這是我找到另一個不錯的想法

Tim 2015-01-25 18:30:53

你的解釋很好懂,謝謝參考
http://pisces.ck.tp.edu.tw/~peng/index.php?action=showfile&file=feeec416b290b5cad22f36f09121037cbf3f9d44c (標題:卡特蘭數)

哈樓 2011-11-05 11:10:40

想問"網路上有提供另外一種的版本"是哪種
我怎麼找都只找到你的=口=

版主回應
https://sites.google.com/a/hpsh.co.cc/code/ti-mu/d887-1chain 2011-11-05 15:51:43