题解如下
2024-03-03 16:08:56
发布于:上海
1阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
const int MOD = 1000000007;
int R, C, K;
vector<vector<int>> grid;
vector<vector<long long>> dp;
int main() {
cin >> R >> C >> K;
grid.assign(R, vector<int>(C));
dp.assign(R, vector<long long>(C, 0));
for (int i = 0; i < R; ++i) {
for (int j = 0; j < C; ++j) {
cin >> grid[i][j];
}
}
dp[0][0] = 1; // 初始化起点
for (int i = 0; i < R; ++i) {
for (int j = 0; j < C; ++j) {
if (i == 0 && j == 0) continue; // 跳过起点
for (int a = 0; a < i; ++a) {
for (int b = 0; b < j; ++b) {
if (grid[a][b] != grid[i][j]) { // 检查是否满足跳跃条件
dp[i][j] += dp[a][b];
dp[i][j] %= MOD;
}
}
}
}
}
cout << dp[R - 1][C - 1] << endl; // 输出到达终点的路径数
return 0;
}
这里空空如也
有帮助,赞一个