HDU2067(卡特兰数)
生活随笔
收集整理的這篇文章主要介紹了
HDU2067(卡特兰数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Problem Descrption
小兔的叔叔從外面旅游回來給她帶來了一個禮物,小兔高興地跑回自己的房間,拆開一看是一個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點(0,0)走到終點(n,n)的最短路徑數是C(2n,n),現在小兔又想如果不穿越對角線(但可接觸對角線上的格點),這樣的路徑數有多少?小兔想了很長時間都沒想出來,現在想請你幫助小兔解決這個問題,對于你來說應該不難吧!
Input
每次輸入一個數n(1<=n<=35),當n等于-1時結束輸入。
Output
對于每個輸入數據輸出路徑數,具體格式看Sample。
Sample Input
1 3 12 -1Sample Output
1 1 2 2 3 10 3 12 416024問題分析:卡特蘭數
AC代碼:
#include<iostream>using namespace std;long int kta[36];int main(){kta[0]=kta[1]=1;int i,j;long int sum=0;for( i=2;i<=35;i++){sum=0;for( j=0;j<i;j++){sum+=(kta[j]*kta[i-j-1]);}kta[i]=sum;}int n;int flag=1;while(cin>>n){if(n==-1)break;printf("%d %d %I64d\n",flag,n,kta[n]*2);flag++;}return 0;}?
總結
以上是生活随笔為你收集整理的HDU2067(卡特兰数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ1321(DFS)
- 下一篇: 维权的意义:一桩还没定论的侵权案