CSUOJ 1772 漫漫上学路(卡特兰数 || 递推)
2016-07-10 14:10
330 查看
1772: 漫漫上学路
Description
对于csuxushu来说,能够在CSU(California State University)上学是他一生的荣幸。CSU校园内的道路设计的十分精巧,由n+1条水平道路和n+1条竖直道路等距交错而成,充分体现了校园深厚的文化底蕴。然而不幸的是CS市每到夏季,天降大雨,使得CSU常常形成“CS海”的奇观,今年,也就是2016年同样也不例外,校园有一半的区域被淹了。由于要进行一年一度激动人心的省赛选拔了,起迟了的csuxushu赶紧从寝室背着一包模板前往机房,好奇的csuxushu发现虽然道路被淹了,但是只有左上三角区域受到影响,也就是说他可以在副对角线以下的道路畅通行走。在这个惊人的场景下,csuxushu做了一个惊人的决定,他要算出他有多少种前往机房的最短路线。然而只有10分钟了,这时候他想到了你——全CSU最厉害的程序员来帮助他解决这个问题。
需要指出的是CSU可以看做左下顶点为csuxushu的寝室(0,0),右上顶点为机房(n,n)的方形区域。
Input
多组数据。每组数据只有一行,为一个整数n(1 ≤n ≤30)。
Output
每组数据输出一行,即由寝室到机房的最短路线方案数。测试数据保证结果为64位整数。
Sample Input
4
Sample Output
14
第一种方法:直接利用卡特兰数
#include <cstdio> #include <cstring> typedef long long ll; const int maxn = 31; ll d[maxn]; //卡特兰数 void catalan() { int i,j; d[0] = 1; for(i = 1;i < maxn;i++){ d[i] = 0; for(j = 0;j < i;j++){ d[i] += d[j] * d[i - j - 1]; } } } int main() { int n,i, j; catalan(); while(scanf("%d",&n) != EOF && 1 <= n && n <= 30){ printf("%lld\n",d ); } return 0; }
第二种方法:递推求解
h[i][j] = h[i - 1][j] + h[i][j - 1]
#include <cstdio> #include <cstring> typedef long long ll; const int maxn = 31; ll h[maxn][maxn]; int main() { int n,i, j; memset(h,0,sizeof(h)); for(i = 0;i < maxn;i++) h[i][0] = 1; for(i = 1; i < maxn; i++){ for(j = 1; j <= i; j++){ h[i][j] = h[i - 1][j] + h[i][j - 1]; } } while(scanf("%d",&n) != EOF && 1 <= n && n <= 30){ printf("%lld\n",h ); } return 0; }
相关文章推荐
- 湖南省第九届大学生计算机程序设计竞赛 高桥和低桥
- CSUOJ nineteen thirteen One big silly dragon gives gifts out 线段树 二分 转化
- CSUOJ 1942 Sort String 线段树 操作变换
- CSUOJ 1939 World's end BFS 仔细思考
- CSUOJ 1945 最简单的题目 背包问题
- 100道动态规划——40 CSUOJ 1889 Copying DNA 记忆化搜索 DP的感觉
- CSUOJ 1861 Unscrambling Images 直接模拟,题面有点难看
- CSUOJ 1862 The Same Game 模拟消消乐
- Password Hacking CSU 1966
- CSUOJ 1898 复盘拉火车(栈+队列模拟)
- CSUOJ 1885 条条大路通罗马(最长路径)
- CSUOJ 1005 Binary Search Tree analog(二叉搜索树模拟)
- CSUOJ 1219 建食堂(两点之间最大距离最小)
- CSUOJ 1010 Water Drinking(BFS)
- CSUOJ 1808 地铁(最短路)
- CSUOJ 1256 天朝的单行道(最短路)
- CSUOJ 1726 你经历过绝望吗?两次!(BFS + 优先队列)
- CSUOJ 1592 石子归并(区间DP)
- CSUOJ 1770 按钮控制彩灯实验(树状数组 || 技巧)
- CSUOJ 1587 爬楼梯