请教一下这串代码应该怎么修改,我的实验结果总是错误
题目:请设计一个程序,输入一个8*8的矩阵,0为通路,1为墙,可走方向:上,下,左,右,左上,左下,右上,右下,起点为左上角,终点为右下角。并判断是否存在一条从起点到终点的通路,如果存在这样的通路,请把通路的坐标输出或者用图形界面进行标记折线路径。
#include<stdio.h>
#define n 8
int dx[8] = { 0,1,1,1,0,-1,-1,-1 };
int dy[8] = { 1,1,0,-1,-1,-1,0,1 };
int maze[n][n] = {
{0,1,0,0,0,0,1,1},
{0,0,0,1,0,0,1,0},
{1,0,1,0,1,0,1,1},
{1,0,1,0,1,1,0,1},
{0,1,1,1,1,1,1,0},
{1,0,0,1,1,0,0,0},
{1,0,1,0,0,0,1,1},
{1,0,1,1,0,1,0,0},
};
int visited[n][n] = { 0 };
int tx, ty;
int DFS(int x, int y) {
if (x == n-1 && y == n-1) {
visited[x][y] = 1;
return 1;
}
visited[x][y] = 1;
for (int i = 0; i <8 ; i++) {
tx = x + dx[i];
ty = y + dy[i];
if (tx>=0&&tx<n&&ty>=0&&ty<n&&maze[tx][ty] == 0 && visited[tx][ty] == 0) {
if (DFS(tx, ty))
return 1;
}
}
visited[x][y] = 0;
return 0;
}
void print() {
if (DFS(0, 0)) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (visited[i][j]) {
printf("(%d, %d) ", i, j);
}
}
}
}
else
printf("不存在通路");
}
int main() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
visited[i][j] = 0;
}
}
visited[0][0] = 1;
print();
return 0;
}