#include"STDIO.H" #define N 7 #define FLAG 2 int maze[N][N]={{1,1,1,1,1,1,1}, {1,0,1,0,1,0,1}, {1,0,0,0,0,1,1}, {1,0,1,0,0,0,1}, {1,0,1,0,1,0,1}, {1,0,1,0,0,0,1}, {1,1,1,1,1,1,1}}; int startx=1; int starty=1; int endx=5; int endy=5; int success=0; int fine(int x,int y,int map[N][N]); void main() { if(fine(startx,starty,maze)) printf("Success!\n"); else printf("Fail!\n"); for (int i=0;i < N;i++) { for(int j=0;j < N;j++) if(maze[i][j]==1) printf("■"); else if(maze[i][j]==2) printf("◇"); else printf(" "); printf("\n"); } } int fine(int x,int y,int map[N][N]) { map[x][y]=FLAG; if(x==endx&&y==endy) success=1; if (!success&&map[x][y+1]==0)fine(x,y+1,map); if (!success&&map[x+1][y]==0)fine(x+1,y,map); if (!success&&map[x-1][y]==0)fine(x-1,y,map); if (!success&&map[x][y-1]==0)fine(x,y-1,map); if(!success) map[x][y]=0;//若此路未通,则清空标记 return success; }