|
#include <stdio.h>
#include<time.h>
#include<stdlib.h>
int a[10][10];
int i,j;
void creat(int a[10][10]) //创建迷宫
{
srand(time(0));
for(i=0;i<10;i++)//创建外围迷宫
{
a[0][i]=0;
a[i][0]=0;
a[9][i]=0;
a[i][9]=0;
}
a[0][1]=1;
a[9][8]=1;
for(i=1;i<9;i++)// 在里面产生0或1的随机数
{
for(j=1;j<9;j++)
{
a[i][j]=(int)rand()%(2);
}
}
for(i=0;i<10;i++)//打印迷宫
{
for(j=0;j<10;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
int seek(int a[10][10],int n,int x, int y)
{
if(x==9 && y==8)
{
a[x][y]=++n; //N为计数步伐
return 1;
}else if(a[x][y]==1)//进行四个方向的判断
{
a[x][y]=++n;
if(seek(a,n,x,y+1))
return 1;
else if(seek(a,n,x+1,y))
return 1;
else if(seek(a,n,x,y-1))
return 1;
else if(seek(a,n,x-1,y))
return 1;
else {
a[x][y]=-1;
return 0;
}
}
else return 0;
}
void main()
{
int flag;
printf("****** welcome to use it ******\n");
while(flag!=1)//如果遇到走不通的迷宫,跳过。找到可以走通的迷宫
{
system("cls");
creat(a);
flag=seek(a,1,1,1);
}
printf("\n**** new ****:\n");
for(i=0;i<10;i++)//打印迷宫
{
for(j=0;j<10;j++)
printf("%3d",a[i][j]);
printf("\n");
}
} |
|