题目
给定一个\(n×m\)的方格阵,沿着方格的边线走,从左上角\((0,0)\)开始,每次只能往右或者往下走一个单位距离,问走到右下角\((n,m)\)一共有多少种不同的走法。
输入格式
共一行,包含两个整数\(n\)和\(m\)。
输出格式
共一行,包含一个整数,表示走法数量。
数据范围
\(1≤n,m≤10\)
输入样例:2 3
输出样例:10
题解:
dfs深搜、用最小的举例进行模拟、任何点都只要向右、或者是向下两种情况,建系来处理该问题、然后利用dfs进行搜索、注意边界问题即可。
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n, m;
int ans;
// 深搜寻找合适方案
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 << endl;
return 0;
}