HDU2067——小兔的棋盘(迷宫,动态规划)
2015-10-17 10:18
1016 查看
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
走格点的迷宫,因为不能穿越对角线,所以到达终点只能向上或者向右走。画出图来可以得出,第一行只能由左边走来,而且对角线上的点只能由下面走来,到达其他点各有两种走法。所以我们事先把第一行所有点的值设为1,进行遍历,到达对角线时i==j,所以map[i][j]=map[i][j-1],只能接受从下面的点传递过来的走法。i!=j时,map[i][j]=map[i-1][j]+map[i][j-1],可以接受两边传递过来的走法。
小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(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
走格点的迷宫,因为不能穿越对角线,所以到达终点只能向上或者向右走。画出图来可以得出,第一行只能由左边走来,而且对角线上的点只能由下面走来,到达其他点各有两种走法。所以我们事先把第一行所有点的值设为1,进行遍历,到达对角线时i==j,所以map[i][j]=map[i][j-1],只能接受从下面的点传递过来的走法。i!=j时,map[i][j]=map[i-1][j]+map[i][j-1],可以接受两边传递过来的走法。
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int n; long long map[40][40]; int main() { int i,j,cnt=1;; while(cin>>n&&n!=-1) { memset(map,0,sizeof(map)); for(i=0;i<=n;++i) map[0][i]=1; for(i=1;i<=n;++i) for(j=0;j<=i;++j) { if(i==j) map[i][j]=map[i][j-1]; else map[i][j]=map[i-1][j]+map[i][j-1]; } printf("%d %d %I64d\n",cnt++,n,2*map ); } return 0; }
相关文章推荐
- python zeros()使用(from numpy import *)
- python字典
- 需求工程-软件建模与分析读书笔记2
- 算法本科考试
- svn 规范apk的生成命名
- 用Eclipse的snippets功能实现代码重用
- 在linux上用yum安装和卸载mongodb 3.0数据库
- 如何实现webfont自定义字体方案
- APache环境变量设置
- NSTimer和CADisplayLink的基本用法
- cocos2d从零开始
- css3 3D变换和动画
- 将JDBC ResultSet结果集变成List
- android Sqlite SQL语句
- PageContext ServletContext ServletConfig辨析
- 深度优先搜索——红与黑
- PageContext ServletContext ServletConfig辨析
- 在 Unix 系统上查找数据的最佳工具和技巧
- 排列问题的其中一种解法
- python变量