迷宫问题代码的疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:46:35
#define m2 12
#define n2 11
#define maxlen m2
#define true 1
#define false 0
#define null 0
#include "stdio.h"
int m=m2-2,n=n2-2;
typedef struct
{ int x,y,dir;
}elemtype;
typedef struct
{elemtype stack[maxlen];
int top;
}sqstktp;
struct moved
{int dx,dy;
};

void inimaze(int maze[][n2])
{int i,j,num;
for(i=1;i<=m;i++)
{for(j=1;j<=n;j++)
{num=(800*(i+j)+1500)%327;
if((num<150)&&(i!=m||j!=n))
maze[i][j]=1;
else
maze[i][j]=0;
printf("%3d",maze[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0,j=0;i<=m+1;i++)
maze[i][j]=1;
for(i=0,j=n+1;i<=m+1;i++)
maze[i][j]=1;
for(i=0,j=0;j<=n+1;j++)
maze[i][j]=1;
for(i=m+1,j=0;i<=n+1;j++)<

好代码先收下了,下星期一定告诉你原因,呵呵!

因为生成迷宫的算法是固定的,
for(i=1;i<=m;i++)
{for(j=1;j<=n;j++)
{num=(800*(i+j)+1500)%327;
if((num<150)&&(i!=m||j!=n))
maze[i][j]=1;
else
maze[i][j]=0;
printf("%3d",maze[i][j]);
}
printf("\n");
}
这一段就生成了迷宫,每次执行同样的算法当然生成同样的迷宫也就有了同样的解啊。不过这个算法真很聪明哦,怎么改改我也不知道,它可以保证生成了有解,自己改动了说不定迷宫就不通了,你可以试试啊!
for(i=0,j=0;i<=m+1;i++)
maze[i][j]=1;
for(i=0,j=n+1;i<=m+1;i++)
maze[i][j]=1;
for(i=0,j=0;j<=n+1;j++)
maze[i][j]=1;
for(i=m+1,j=0;i<=n+1;j++)
maze[i][j]=1;
这一段是生成围墙,即将迷宫边缘都置1表示不通。改了算法就不能正确执行了哦!

什么东东啊