过河卒(初级版)
描述
棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过10的整数)。 请计算出卒从A点能够到达B点的路径条数。
输入
n m (B点的坐标) 1<=n、m<=10
输出
路径的总条数
样例输入
2 1
样例输出
3
提示
因为卒只能往下或者往右走,每次只能走一格。所以到达左边的边界和上边的边界的路径方案都只有一种。
基于标数法可得递推公式为:a[i][j]=a[i-1][j]+a[i][j-1]。
用递归吧
#include <stdio.h>
long long way(int x, int y)
{
long long result;
if (y == 0 && x > 0)
result = way(x - 1, 0);
if (x == 0 && y > 0)
result = way(0, y - 1);
if (x > 0 && y > 0)
result = way(x - 1, y) + way(x, y - 1);
if (x == 0 && y == 0)
result = 1;
return result;
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
long long count;
count = way(n, m);
printf("%lld", count);
return 0;
}
这个直接用 n+m 就不行了吗