您的位置:首页 > 理论基础 > 数据结构算法

迷宫求解:严蔚敏老师的数据结构的实现

2009-09-29 16:00 267 查看
本程序的运行环境为tc2.0。
#include <stdio.h>
#include <conio.h>
#define NULL 0
struct Array
{
int x;
int y;
}arr[64],*top,*base;
int n=0;
int a[8][8]={{0,0,1,0,0,0,1,0},{0,0,1,0,0,0,1,0},{0,0,0,0,1,1,0,0},{0,1,1,1,0,0,0,0},{0,0,0,1,0,0,0,0},{0,1,0,0,0,1,0,0},{0,1,1,1,0,1,1,0},{1,0,0,0,0,0,0,0}};
void MazePath(int i,int j)
{
if(i>=0 && j>=0 && j<8 && i<8 && a[i][j]==0 && Exit(i,j))
{
if(n!=0) top++;
top->x=i;
top->y=j;
n=n+1;
if(!(i==7 && j==7))
MazePath(i,j+1);
}
else
{
if(i==top->x && j-1==top->y)
MazePath(top->x+1,top->y);
else if(i==top->x+1 && j==top->y)
MazePath(top->x,top->y-1);
else if(i==top->x && j+1==top->y)
MazePath(top->x-1,top->y);
else
{
do
{
top--;
if(top->x==(top+1)->x && top->y+1==(top+1)->y)
{
MazePath(top->x+1,top->y);
break;
}
else if(top->x+1==(top+1)->x && top->y==(top+1)->y)
{
MazePath(top->x,top->y-1);
break;
}
else if(top->x==(top+1)->x && top->y-1==(top+1)->y)
{
MazePath(top->x-1,top->y);
break;
}
}while(top!=NULL);
}
}
}
int Exit(int i,int j)
{
struct Array *p;
p=base;
while(p!=top)
{
if(p->x==i && p->y==j)
return(0);
p++;
}
return(1);
}
void main()
{
int b;
clrscr();
top=base=arr;
MazePath(0,0);
while(top!=base)
{
printf("%d,%d/n",top->x,top->y);
top--;
}
printf("%d,%d/n",base->x,base->y);
scanf("%d",&b);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: