小兔的棋盘(HDU-2067)
生活随笔
收集整理的這篇文章主要介紹了
小兔的棋盘(HDU-2067)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Problem Description
小兔的叔叔從外面旅游回來給她帶來了一個禮物,小兔高興地跑回自己的房間,拆開一看是一個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點(0,0)走到終點(n,n)的最短路徑數是C(2n,n),現在小兔又想如果不穿越對角線(但可接觸對角線上的格點),這樣的路徑數有多少?小兔想了很長時間都沒想出來,現在想請你幫助小兔解決這個問題,對于你來說應該不難吧!
Input?
每次輸入一個數n(1<=n<=35),當n等于-1時結束輸入。
Output
對于每個輸入數據輸出路徑數,具體格式看Sample Output。
Sample Input
1
3
12
-1
Sample Output
1 1 2
2 3 10
3 12 416024
思路:滿足卡特蘭數列遞推公式,打表即可
Source Program
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<set> #include<map> #include<stack> #include<ctime> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 1001 #define MOD 1e9+7 #define E 1e-6 #define LL long long using namespace std; LL Catalan[N]; int main() {Catalan[0]=1;Catalan[1]=1;for(int i=2;i<=36;i++){Catalan[i]=0;for(int j=0;j<i;j++)Catalan[i]+=(Catalan[j]*Catalan[i-1-j]);}int n;int cnt=1;while(scanf("%d",&n)!=EOF&&n!=-1){printf("%d %d %lld\n",cnt++,n,Catalan[n]*2);}return 0; }?
總結
以上是生活随笔為你收集整理的小兔的棋盘(HDU-2067)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ride to Office(信息学奥赛
- 下一篇: 接水问题(信息学奥赛一本通-T1233)