#include<bits/stdc++.h> using namespace std; int n; char maze[21][21]; // 迷宫矩阵 int path[400][2]; // 存储路径坐标,最多400步(20x20) int pathLength = 0; // 当前路径长度 // 方向数组:左、上、右、下 int dx[4] = {0, -1, 0, 1}; int dy[4] = {-1, 0, 1, 0}; // 打印路径 void printPath() { for (int i = 0; i < pathLength; i++) { if (i != 0) cout << "->"; cout << "(" << path[i][0] << "," << path[i][1] << ")"; } cout << endl; } // 深度优先搜索 bool dfs(int x, int y) { // 记录当前路径点 path[pathLength][0] = x; path[pathLength][1] = y; pathLength++; // 到达终点 if (x == n && y == n) { printPath(); return true; } // 标记当前位置已访问 maze[x][y] = '1'; // 按照左、上、右、下的顺序搜索 for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; // 检查是否在迷宫范围内且可以通行 if (nx >= 1 && nx <= n && ny >= 1 && ny <= n && maze[nx][ny] == '0') { if (dfs(nx, ny)) { return true; // 找到路径,立即返回 } } } // 回溯:路径长度减1 pathLength--; return false; } int main() { cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin >> maze[i][j]; } } dfs(1, 1); // 从起点开始搜索 return 0; } /************************************************************** Problem: 1431 User: zhengzihao Language: C Result: Compile Error ****************************************************************/