查找路径
描述
有一张 m×n 个小方格的地图,
微信截图_20230301164904.png
一个机器人位于地图的左上角(如图标记为Start 的地方),它每步只能向右或者向下移动一格,
如果走到右下角的终点(如图标记为 Finish 的地方),有多少种不同的方法?
例如,一个 3×2 的地图,行走的方法数是 3 种,分别是:
右 -> 右 -> 下
右 -> 下 -> 右
下 -> 右 -> 右
输入
两个整数 m( 0 < m <= 100 )和 n( n <= 100),代表地图的行数和列数。
输出
一个整数,表示行走的方法数。
输入样例 1
8 8
输出样例 1
3432
语言:c++
题目是:查找路径
给你提示,这是深度搜索问题,主要是判断边界,记录行走路径和回溯
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这是一道经典的动态规划问题,可以使用递归或者迭代的方式进行求解。以下是使用迭代方式求解的代码示例:
#include <iostream>
using namespace std;
const int MAXN = 110;
int dp[MAXN][MAXN];
int main() {
int m, n;
cin >> m >> n;
// 初始化边界条件
for (int i = 1; i <= m; i++) {
dp[i][1] = 1;
}
for (int j = 1; j <= n; j++) {
dp[1][j] = 1;
}
// 递推求解
for (int i = 2; i <= m; i++) {
for (int j = 2; j <= n; j++) {
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
// 输出结果
cout << dp[m][n] << endl;
return 0;
}
其中,dp[i][j]表示到达地图中第i行第j列格子的不同方法数。初始化边界条件为第一行和第一列的格子只能向右或者向下走,因此到达这些格子的方法数都为1。然后,根据递推公式dp[i][j] = dp[i-1][j] + dp[i][j-1],依次求解其他位置的方法数,最终得到dp[m][n]即为到达终点的不同方法数。
不知道你这个问题是否已经解决, 如果还没有解决的话: