棘手的迷宫问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:06:47
#include<stdio.h>
#define N 20
#define M 20
#define K 400
typedef struct
{ int x,y;
}item;

typedef struct /*栈的结构体*/
{ int x,y,d;
}datatype;

int migong()
{int maze[N][N];
int a=0,b,d,c=0,i,j,x,y;
int p,m,n;
item move[4]={{0,1},{1,0},{0,-1},{-1,0}};
datatype temp[K];
FILE *fp;
if((fp=fopen("DATA.txt","r"))==NULL)
{
printf("Cannot open this file!\n");
getch();
exit();
}
for(p=0;p<22;p++)
{
if(p==20) fscanf(fp,"%d,%d\n",&temp[0].x,&temp[0].y);
else if(p==21) fscanf(fp,"%d,%d",&m,&n);
else if((fscanf(fp,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
&maze[p][0],&maze[p][1],&maze[p][2],&maze[p][3],&maze[p][4],&maze[p][5],&maze[p][6],&maze[p][7],&maze[p][8],&maze[p][9],<

其实也不能怪楼主,类似的题目,了解的人一眼就能看出来是基于深度搜索的迷宫求解。
楼主的代码并不是十分理想,不过原理没有错,只是一些细节出了问题。以下代码并没有修改楼主的流程,只是将一些存在错误的细节修改了一下。代码如下:

// VC++ 6.0 编译通过
#include <stdio.h>
#include <conio.h>
#include <process.h>

#define N 20
#define M 20
#define K 400

typedef struct
{
int x,y;
}item;

typedef struct /*栈的结构体*/
{
int x,y,d;
}datatype;

int migong()
{
int maze[N][M];
int a=0,b,d,i,j,x,y;
int p,m,n;

// 初始化方向数据
item move[4]={{0,1},{1,0},{0,-1},{-1,0}};

// 定义路径栈
datatype temp[K];

// 读取迷宫数据
FILE *fp;
if((fp=fopen("DATA.txt","r"))==NULL)
{
printf("Cannot open this file!\n");
getch();
exit(0);
}
for(p=0;p<22;p++)
{
if(p==20) fscanf(fp,"%d,%d\n",&temp[0].x,&temp[0].y);
else i