高分题~~C语言高手请进。。迷宫问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:18:21
1,1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,0,1,0,1,
1,0,0,1,0,0,0,1,0,1,
1,0,0,0,0,1,1,0,0,1,
1,0,1,1,1,0,0,0,0,1,
1,0,0,0,1,0,0,0,0,1,
1,0,1,0,0,0,1,0,0,1,
1,0,1,1,1,0,1,1,0,1,
1,1,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1, 这样的一个迷宫,0和1分别表示通与不通。用什么算法比较简单?另外我想用2来替代走过,并且能到达出口点的路径,该如何实现??还有就是如何实现输入任何迷宫,可以输出到达出路的路径
最后想说,不要在网上随便找个。我不是要整个程序,是要以上问题的答案。谢 或者从我一下的程序修改
#include<stdio.h>
#define N1 10
#define N2 10
int getpath(int maze[N1][N2])//在迷宫中探路的函数
{
int stack[N1*N2][2];
int i,x=1,y=1,ok,top=0;//可通路径上第一个点(入口点)的坐标进入路径数组stack
stack[top][0]=x;
stack[top][1]=y;//循环探路。加1则向前,减1则退回一步

while(1)
{
ok=0;//标志能否向前
if (maze[x+1][y]==0)
{x=x+1;ok=1;}//向下
else
if (maze[x][y+1]==0)
{y=y+1;ok=1;}//向右
else
if (maze[x][y-1]==0)
{y=y-1;ok=1;}//向左
else
if (maze[x-1][y]==0)

//本来想用开空间的,后来想想太麻烦了……
#include<stdio.h>
//#include<iostream.h>
//#include<malloc.h>
//int **maze;
//int N1,N2;
int maze[10][10]={{1,1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,0,1,0,1},{1,0,0,1,0,0,0,1,0,1},{1,0,0,0,0,1,1,0,0,1},{1,0,1,1,1,0,0,0,0,1},{1,0,0,0,1,0,0,0,0,1},{1,0,1,0,0,0,1,0,0,1},{1,0,1,1,1,0,1,1,0,1},{1,1,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1}};
int zx=8,zy=2;
void PrintMaze(void){
int l[100][2],i,j;
for(i=0;i<100;i++){
l[i][0]=-1;
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(maze[i][j]>2){
l[maze[i][j]-3][0]=i;
l[maze[i][j]-3][1]=j;
}
}
}for(i=0;i<100;i++){
if(l[i][0]!=-1)printf("(%d,%d)\n",l[i][0],l[i][1]);
else goto end;
}
end:for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(maze[i][j]>2){
maze[i][j]=2;
}printf("%d ",maze[i][j]);
}print