#include <algorithm> #include <cmath> #include <cstring> #include <iostream> #include <string> using namespace std; int arr[5][5] = {0}; int xx[4] = {0, 0, -1, 1}; int yy[4] = {1, -1, 0, 0}; int ans[9][2]; int ansIndex; int visited[5][5]; int flag = 1; void dfs(int x, int y) { if (flag) { if (x == 4 && y == 4) { for (int i = 0; i < 9; i++) { printf("(%d, %d)\n", ans[i][0], ans[i][1]); } flag = 0; } for (int i = 0; i < 4; i++) { int X = x + xx[i]; int Y = y + yy[i]; if (X >= 0 && X < 5 && Y >= 0 && Y < 5 && visited[X][Y] != 1 && arr[X][Y] == 0 && flag) { visited[X][Y] = 1; ans[ansIndex][0] = X; ans[ansIndex][1] = Y; ansIndex++; dfs(X, Y); visited[X][Y] = 0; ansIndex--; } } } } int main() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { cin >> arr[i][j]; } } memset(ans, 0, sizeof(ans)); memset(visited, 0, sizeof(visited)); ansIndex = 1; dfs(0, 0); } |
Double click to view unformatted code.