答案
2026-08-23 09:10:30
发布于:山东
0阅读
0回复
0点赞
#include <iostream>
using namespace std;
int R, C;
char grid[20][20];
// dfs(x,y): 当前在(x,y),返回从(x,y)到终点的路径数
int dfs(int x, int y) {
// 到达右下角,找到1条方案
if (x == R-1 && y == C-1) {
return 1;
}
int res = 0;
// 枚举所有可以跳过去的点 i>x, j>y
for (int i = x+1; i < R; i++) {
for (int j = y+1; j < C; j++) {
// 颜色不同才能跳
if (grid[i][j] != grid[x][y]) {
res += dfs(i, j);
}
}
}
return res;
}
int main() {
cin >> R >> C;
for (int i = 0; i < R; i++) {
cin >> grid[i];
}
cout << dfs(0, 0) << endl;
return 0;
}
这里空空如也







有帮助,赞一个