//老鼠走迷宫
#include<stdio.h>
#include<stdlib.h>
int visit(int, int);
int maze[7][7] = { {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 start1 = 1, start2 = 1;
int end1 = 5, end2 = 5;
int success = 0;
int main(void) {
int i, j;
printf_s("显示迷宫:\n");
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++)
if (maze[i][j] == 2)
printf_s("tt");
else
printf_s(" ");
printf_s("\n");
}
if (visit(start1, start2) == 0)
printf_s("\n not find way!\n");
else {
printf_s("\n find way:\n");
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++) {
if (maze[i][j] == 2)
printf_s("tt");
else if (maze[i][j] == 1)
printf_s("aa");
else
printf_s(" ");
}
printf_s("\n");
}
}
return 0;
}
int visit(int i, int j) {
maze[i][j] = 1;
if (i == end1 && j == end2)
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;
}
//老鼠走迷宫
#include<stdio.h>
#include<stdlib.h>
int visit(int, int);
int maze[9][9] = { {2,2,2,2,2,2,2,2,2},
{2,0,0,0,0,0,0,0,2},
{2,0,2,0,2,2,2,0,2},
{2,0,2,2,0,2,0,2,2},
{2,2,0,2,0,2,2,0,2},
{2,0,0,0,0,0,2,0,2},
{2,0,2,0,0,0,2,0,2},
{2,0,0,2,0,2,2,2,0},
{2,2,2,2,0,0,2,2,2}
};
int start1 = 1, start2 = 1;
int end1 = 7, end2 = 7;
int main(void) {
int i, j;
printf_s("显示迷宫:\n");
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++)
if (maze[i][j] == 2)
printf_s("tt");
else
printf_s(" ");
printf_s("\n");
}
if (visit(start1, start2) == 0)
printf_s("\n not find way!\n");
else {
printf_s("\n find way:\n");
for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++) {
if (maze[i][j] == 2)
printf_s("tt");
else if (maze[i][j] == 1)
printf_s("aa");
else
printf_s(" ");
}
printf_s("\n");
}
}
return 0;
}
int visit(int i, int j) {
maze[i][j] = 1;
if (i == end1 && j == end2)
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;
}