该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#define NULL 0
struct maze
{
struct maze *prior;
int x;
int y;
int dir;
struct maze *next;
};
int cmp(struct maze *head,struct maze *q)
{
struct maze *p;
int i=1;
p=head;
while(p->x!=q->x||p->y!=q->y)
p=p->next;
if(p==q)
return(1);
else
return(0);
}
void main()
{
int a[10][10],X,Y,i,j,in_x,in_y,out_x,out_y;
double t1,t2;
struct maze *head,*p,*q;
printf("scale:\n");
scanf("%d %d",&X,&Y);
printf("maze consisting of 0 (accessible) and 1 (inaccessible):\n");
for(i=0;i
{
for(j=0;j
scanf("%d",&a[i][j]);
}
printf("in:\n");
scanf("%d %d",&in_x,&in_y);
printf("out:\n");
scanf("%d %d",&out_x,&out_y);
t1=clock();
head=(struct maze *)malloc(sizeof(struct maze));
head->prior=NULL;
p=head;
q=p;
p->x=in_x-1;
p->y=in_y-1;
p->dir=1;
loop:
do
{
q=(struct maze *)malloc(sizeof(struct maze));
p->next=q;
q->prior=p;
q->dir=1;
switch(p->dir)
{
case 1:q->x=p->x+1;q->y=p->y;break;
case 2:q->x=p->x;q->y=p->y+1;break;
case 3:q->x=p->x-1;q->y=p->y;break;
case 4:q->x=p->x;q->y=p->y-1;break;
default:
free(q);