对于20x20的网格,从左上角到右下角的所有路径条数;
典型的递推问题。
1 DP解法:
#include <iostream>
using namespace std;
long long dp[25][25];
int main() {
for (int i = 1; i <= 21; i++) {
for (int j = 1; j <= 21; j++) {
if (i == 1 && j == 1) {
dp[i][j] = 1;
} else {
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
}
cout << dp[21][21] << endl;
return 0;
}
2 排列组合法:高中数学,C40 20的排列结果即可
int main() {
long long ans = 1;
for (int i = 40, j = 1; i > 20; i--, j++) {
ans *= i;
ans /= j;
}
cout << ans << endl;
return 0;
}
输出:
137846528820