首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么小弟我的迷宫只有一种解,请大家帮忙看看

2012-08-17 
为什么我的迷宫只有一种解,请大家帮忙看看为什么我的迷宫只有一种解,请大家帮忙看看//迷宫递归:#includes

为什么我的迷宫只有一种解,请大家帮忙看看
为什么我的迷宫只有一种解,请大家帮忙看看
 
//迷宫递归:
#include<stdio.h>
#include<stdlib.h>
#define m 3
#define n 3
typedef struct{
int x,y;
}item;
item move[4];

int path(int maze[][n+2],item move[],int x,int y,int step)
{
int i;
step++;
maze[x][y]=step;
if(x==m&&y==n)
return 1;  
for(i=0;i<4;i++)
{
if(maze[x+move[i].x][y+move[i].y]==0)
if(path(maze,move,x+move[i].x,y+move[i].y,step))
return 1;  


}

}

void main()
{
item move[4];

//int maze[m+2][n+2];
int i,j;
/*for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
scanf("%d",&maze[i][j]);
}*/
int maze[m+2][n+2]={{1,1,1,1,1},{1,0,1,1,1},{1,0,0,1,1},{1,0,0,0,1},{1,1,1,1,1}};
printf("\n");
move[0].x=1;move[0].y=0;
move[1].x=0;move[1].y=1;
move[2].x=-1;move[2].y=0;
move[3].x=0;move[3].y=-1;
if(path(maze,move,1,1,1))
{
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
printf("%d ",maze[i][j]);
printf("\n");
}

}  
else printf("迷宫无路径\n");
getchar();
}

[解决办法]
在http://www.codeproject.com上搜“Maze”
[解决办法]
你想要几种? 如果你是广度 那只有一种最短路径步数 深度可以找出所有的路径

热点排行