小兔的棋盤(hdu2067)

小兔的棋盤

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7547    Accepted Submission(s): 4020


php

Problem Description
小兔的叔叔從外面旅遊回來給她帶來了一個禮物,小兔高興地跑回本身的房間,拆開一看是一個棋盤。小兔有所失望。

只是沒過幾天發現了棋盤的好玩之處。從起點(0,0)走到終點(n,n)的最短路徑數是C(2n,n),現在小兔又想假設不穿越對角線(但可接觸對角線上的格點),這種路徑數有多少?spa

小兔想了很是長時間都沒想出來,現在想請你幫助小兔解決問題,對於你來講應該不難吧!code

 

 

Input
每次輸入一個數n(1<=n<=35),當n等於-1時結束輸入。
 

 

Output
對於每個輸入數據輸出路徑數。詳細格式看Sample。
 

 

Sample Input
1
3
12
-1
 

 

Sample Output
1 1 2
2 3 10
3 12 416024
 
 

題意:從(0,0)---(n,n)問你有幾條路徑;不穿過對角線。

 

思路: 

以對角線分開,上三角和下三角對稱;

轉載請註明出處:尋找&星空の孩子 

題目連接:http://acm.hdu.edu.cn/showproblem.php?

pid=2067orm

 

#include<stdio.h>
#define LL __int64
LL num[36][36]={0};
void init()
{
    for(int i=1;i<=35;i++)
    {
        num[i][0]=1;
        for(int j=1;j<i;j++)
            num[i][j]=num[i][j-1]+num[i-1][j];
        num[i][i]=num[i][i-1];
    }
}
int main()
{
    int n,ca=1;
    init();
    while(scanf("%d",&n)!=EOF)
    {
        if(n==-1) break;
        printf("%d %d %I64d\n",ca++,n,2*num[n][n]);
    }
    return 0;

}
相關文章
相關標籤/搜索