本文最后更新于 874 天前,其中的信息可能已经有所发展或是发生改变。
822. 走方格 (递归搜索树 · 二维)
原题链接
描述:
给定一个 n×m 的方格阵,沿着方格的边线走,从左上角 (0,0) 开始,每次只能往右或者往下走一个单位距离,问走到右下角 (n,m) 一共有多少种不同的走法。
输入格式
共一行,包含两个整数 n 和 m。
输出格式
共一行,包含一个整数,表示走法数量。
数据范围
1≤n,m≤10
输入样例:
2 3
输出样例:
10
分析
- 每次到达路线拐点进行判断边界并选择
- 满足条件计数加一
代码
#include <bits/stdc++.h>
using namespace std;
int n,m,ans=0; //定义边界n和m
void ff(int k,int l){ //递归遍历
if(k==n&&l==m){ //如果同时抵达边界,则满足条件
ans++;
}
else if(k<=n&&l<=m){ //判断在边界内选择
ff(k+1,l); //向下边界移动1,右边界不动
ff(k,l+1); //向右边界移动1,下边界不动
}
}
int main(){
cin>>n>>m;
ff(0,0); //从(0,0)位置开始遍历到(n,m)
cout<<ans;
return 0;
}