点击查看代码
#include<iostream>
using namespace std;
int n, m, ans = 0;
void dfs(int x, int y) {
if (x == n && y == m) ans ++;
else {
if (y < m) dfs(x, y + 1);
if (x < n) dfs(x + 1, y);
}
}
int main()
{
cin >> n >> m;
dfs(0, 0);
cout << ans;
return 0;
}
- x 和 y 分别表示方格上的坐标,当 x == n && y == m 时表示走到了方格的右下角,执行 ans ++,记录到达的次数
y < m,表示没有走到 y 方向的边界,执行 dfs(x, y + 1) 进行递归搜索
x < n,表示没有走到 x 方向的边界,执行 dfs(x + 1, y) 进行递归搜索