题解
2024-03-21 15:50:54
发布于:浙江
112阅读
0回复
0点赞
假设能有一种状态 dp[i][j] 表示从 (1, 1) 到达 (i, j) 不同路径的总量。那么 m*n 的网格从 (1, 1) 到达 (m, n) 不同路径的总量,就是
dp[m][n]。根据题意 dp[i][j] 作为一次阶段性终点,它只能:
从上面来:dp[i-1][j] 向下走
从左边来:dp[i][j-1] 向右走
因此: dp[i][j] = dp[i-1][j] + dp[i][j-1];
#include<bits/stdc++.h>
using namespace std;
const int N = 101;
long long dp[N][N];
long long n, m;
int main(){
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;
}
这里空空如也
有帮助,赞一个