迷宫问题,C语言

# include & ltstdio.h & gt

int main(void)

{

int迷宫[100][100];

int迷宫[100][100];

int m,n;

int p,q;

Printf("输入迷宫的行数m和列数n:\ n ");

scanf("%d%d ",& ampm & amp;n);

for(p = 0;p & lt= n+1;p++){

迷宫[0][p]= 1;

迷宫[m+1][p]= 1;

}

for(p = 1;p & lt= m;p++){

迷宫[p][0]= 1;

迷宫[p][n+1]= 1;

Printf("在第%d行输入迷宫:\n ",p);

for(q = 1;q & lt= n;q++){

scanf("%d ",& amp迷宫[p][q]);

迷宫[p][q]=迷宫[p][q];

}

}

结构位置{

int行;

int col

}方式[100];

int movehoriz[8]={-1,0,1,1,0,-1,-1 };

int movevert[8]={1,1,1,0,-1,-1,-1,0 };

int endrow = m;

int end col = n;

方式[0]。row = 1;

方式[0]。col = 1;

int start = 3;

int I = 0;

int k;

int j;

int found = 0;

而(!找到){

for(k =开始;k & ltstart+8;k++){

如果((迷宫[道[我])。row+movevert[k%8]][way[i]。col+movehoriz[k % 8]]= = 0)& amp;& amp((i==0)||((way[i])。划!=way[i-1]。排)||(道[我]。科尔。=way[i-1]。col)))){

方式[i+1]。row=way[i]。row+movevert[k % 8];

方式[i+1]。col=way[i]。col+movehoriz[k % 8];

i++;

start =(k+5)% 8;

打破;

}

如果((道[我])。row = = endrow)& amp;& amp(道[我]。col==endcol)){

打破;

}

如果((迷宫[道[我])。row+movevert[k]][way[i]。col+movehoriz[k]]= = 0)& amp;& amp(道[我]。row==way[i-1]。row)& amp;& amp(道[我]。col==way[i-1]。col)){

方式[我]。row = 0;

方式[我]。col = 0;

迷宫[路[我]。行][道[我]。col]= 1;

I-;

start =(start+4)% 8;

}

}

if(k & gt;=start+8){

打破;

}

如果((道[我])。row==endrow)||(way[i]。col==endcol)){

发现= 1;

打破;

}

}

如果(找到){

for(j = 0;j & lt= I;j++){

printf("maze[%d][%d]\n ",way[j]。排,道[j]。col);

}

}

否则{

printf("迷宫没有路径\ n ");

}

}

QQ: 366597114不一定正确。可能有个小错误。如果你有任何问题,你可以问我