计蒜课 蒜头君走迷宫
2017-03-23 10:25
141 查看
问题
蒜头君从一个 n 行 m 列的迷宫的左上角走到右下角,蒜头君每次只能向下或者向右走一步,蒜头君想知道他有多少种走法。输入格式
输入 2 个整数 n(1≤n≤3),m(2≤m≤10^9)。
输出格式
输出方案数。
样例输入1
2 3
样例输出1
3
样例输入2
3 3
样例输出2
6
思路
在看到m的数据达到10^9的时候,可以发现用dfs做肯定超时,用数组存数据肯定内存不够,因此我们得想别的方法解决这个问题,此题我是用排列组合做的,我们可以发现无论怎么走到终点,总步数是一致的,既向下走 n-1 步 ,向右走 m-1 步,一共走了 n+m-2 步,因此样例1 输入2 3的方案数为Cn+m-2(n-1)也就是C3(1)=3,因为虽然是 2 , 3 个格子,但是每个方向只需要走 1 , 2 步,总共为3步我又发现Cmn=n!m!(n−m)!=n∗(n−1)...∗(n−m+1)m! 所以可以简化为如下代码===>>>
代码
#include <iostream> using namespace std; long long factorial(int n)//求阶乘 { int sum=1; for (int i=1;i<=n;i++) { sum*=i; } return sum; } int main() { long long m; int n; scanf("%d%lld",&n,&m); long long x=1; for (int i=n+m-2;i>n+m-2-n+1;i--) { x*=i; } long long total=x/factorial(n-1); printf("%lld",total); }
相关文章推荐
- 迷宫问题DFS
- POJ 3984 迷宫问题
- 迷宫求解,栈法
- 栈的运用---迷宫
- POJ 3984 迷宫问题
- 走迷宫 sdut bfs 深度搜索
- 简单水池&&迷宫问题
- 使用栈和队列实现迷宫路径查找算法
- 迷宫问题
- POJ 3984 迷宫问题(kuangbin带你飞 专题一:简单搜索)
- HDOJ 题目1728 逃离迷宫(BFS)
- bin神专题 迷宫问题
- POJ-3984-迷宫问题
- POJ 题目3984 迷宫问题(BFS)
- HDOJ 小希的迷宫 1272
- NYOJ306 走迷宫(dfs+二分搜索)
- FZU 2186 小明迷宫寻宝 状压Dp
- HDOJ 1272.小希的迷宫
- hdu1728逃离迷宫 bfs
- 奥数等式与走迷宫Dfs实现