小兔的棋盘(卡特蘭數)
2017-07-22 18:22
246 查看
Problem Description
小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!
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
Author
Rabbit
Source
RPG专场练习赛
根據樣例不難看出,每一種方案書都是其對應的卡特蘭數的兩倍。
換句話說,把卡特蘭數乘以2便是本體的答案。
為了方便,我索性直接將卡特蘭數公式中的h(1)更改成了2。
小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!
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
Author
Rabbit
Source
RPG专场练习赛
根據樣例不難看出,每一種方案書都是其對應的卡特蘭數的兩倍。
換句話說,把卡特蘭數乘以2便是本體的答案。
為了方便,我索性直接將卡特蘭數公式中的h(1)更改成了2。
#include<iostream> #include<cstring> using namespace std; #define maxn 120 int a[maxn][maxn];//儲存卡特蘭數 int b[maxn];//n對應卡特蘭數的長度 void Catalan()//卡特蘭數計算函數 { //計算公式:h(n)=h(n-1)*(4*n-2)/(n+1); //大數運算 int i, j, len, carry, temp; a[1][0] = 2; b[1] = 1; a[0][0] = 0; len = 1; for (i = 2; i <= 100; i++) { for (j = 0; j < len; j++)//len 始終等於前一個卡特蘭數的位數 { a[i][j] = a[i - 1][j] * (4 * (i - 1) + 2); } carry = 0; for (j = 0; j < len; j++)//進位操作 { temp = a[i][j] + carry; a[i][j] = temp % 10; carry = temp / 10; } while (carry) { a[i][len++] = carry % 10; carry /= 10; } carry = 0; for (j = len - 1; j >=0; j--)//除法 { temp = carry * 10 + a[i][j]; a[i][j] = temp / (i + 1); carry = temp % (i + 1); } while (!a[i][len - 1]) len--; b[i] = len; } } int main() { int n; int point = 1; Catalan();//打表 while (~scanf("%d", &n)&&n!=-1) { printf("%d %d ", point,n); for (int k = b -1; k >=0; k--) { printf("%d",a [k]); } printf("\n"); point++; } return 0; }
相关文章推荐
- hdu 2067 小兔的棋盘
- hdu 2067小兔的棋盘
- [ACM] hdu 2067 小兔的棋盘(卡特兰数Catalan)
- HDU 2067 小兔的棋盘
- (hdu step 2.3.8)小兔的棋盘(卡特兰数:从左上角走到右上角的路径数)
- HDU 2067 小兔的棋盘(dp)
- 小兔的棋盘--卡特兰数
- 小兔的棋盘 (卡特兰数)
- HDU 2067 小兔的棋盘 (组合数学 卡特兰数)
- hdu 2067 小兔的棋盘
- //水题五道//dp入门//手机短号//小兔的棋盘//数塔问题//核反应堆//简易版之最短距离
- 杭电2067-小兔的棋盘
- [ACM] hdu 2067 小兔的棋盘(卡特兰数Catalan)
- 杭电---2067 小兔的棋盘
- ACM--steps--dyx--2.3.8--小兔的棋盘
- 小兔的棋盘 2067
- HDU2067——小兔的棋盘(迷宫,动态规划)
- HDU 2067 小兔的棋盘 【递推】
- HDU 2067 小兔的棋盘(动态规划)
- 小兔的棋盘(catalan数的应用)