Run ID:158832
提交时间:2026-08-22 17:49:52
#include <iostream> #include <vector> using namespace std; int main() { int m, n; // 读取行数和列数 if (!(cin >> m >> n)) return 0; // 使用 long long 类型的二维数组,防止路径数过大导致 int 溢出 vector<vector<long long>> dp(m, vector<long long>(n, 0)); // 初始化第一列:一直向下走,只有 1 种方法 for (int i = 0; i < m; i++) { dp[i][0] = 1; } // 初始化第一行:一直向右走,只有 1 种方法 for (int j = 0; j < n; j++) { dp[0][j] = 1; } // 动态规划填表:从 (1,1) 开始,逐个计算到达每个格子的方法数 for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; } } // 输出右下角终点的方法数 cout << dp[m - 1][n - 1] << endl; return 0; }