迷宫问题,C语言
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不一定正确。可能有个小错误。如果你有任何问题,你可以问我