老鼠走迷宫1.0
九九已经不是第一次写迷宫了~不过没事还是去看看资料敲敲代码~程序代码:
/* 老鼠走迷宫是递归回求解的基本题型,我们在二维阵列中用使用2 表示迷宫墙壁,使用1来表示老鼠的行走的路径,试以程式求出由入口 至出口的路径 解法 老鼠的走法有上、下、左、右四个方向,在每前进一格之后就 选一个方向前进,无法前进时退回选择下一个可前进的方向,如此 在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题, 请直接看程式应就可以理解*/ #include<stdio.h> #include<stdlib.h> #define N 7 int visit(int ,int ); void print(); int maze[N][N]= { {2,2,2,2,2,2,2}, {2,0,0,0,0,0,2}, {2,0,2,0,2,0,2}, {2,0,0,2,0,2,2}, {2,2,0,2,0,2,2}, {2,0,0,0,0,0,2}, {2,2,2,2,2,2,2}, }; int startI=1; int startJ=1;//入口 int endI=5; int endJ=5;//出口 int success=0; int main() { if (visit(startI,startJ)==0) puts("\n没有找到出口"); else print(); return 0; } int visit(int i,int j) { maze[i][j]=1; if (i==endI&&j==endJ) success=1; if (success!=1&&maze[i][j+1]==0) visit(i,j+1); if (success!=1&&maze[i+1][j]==0) visit(i+1,j); if (success!=1&&maze[i][j-1]==0) visit(i,j-1); if (success!=1&&maze[i-1][j]==0) visit(i-1,j); if (success!=1) maze[i][j]=0; return success; } void print() { int i=0; int j=0; puts("显示迷宫"); for (i=0;i!=N;++i) { for (j=0;j!=N;++j) if (maze[i][j]==2) putchar('#'); else if (maze[i][j]==1) putchar('o'); else putchar(' '); puts(""); } }