请高手帮忙!

     写了个老鼠走迷宫的代码,结果准备打印出走之前的地图和走之后的地图,不知道为啥,只输出了前一个,而没有后一个。

     好心的人帮我看看是怎么回事,不胜感激。

源代码:

#include<iostream>
#define EAST MAZE[x][y+1]  
#define WEST MAZE[x][y+1]
#define SOUTH MAZE[x][y+1]
#define NORTH MAZE[x][y+1]
using namespace std;
const int ExitX=8;
const int ExitY=10;
struct list
{
    int x,y;
    struct list * next;
};

typedef struct list node;
typedef node * link;
int MAZE[10][12]={1,1,1,1,1,1,1,1,1,1,1,1,
                               1,0,0,0,1,1,1,1,1,1,1,1,
                               1,1,1,0,1,1,0,0,0,0,1,1,
                               1,1,1,0,1,1,0,1,1,0,1,1,
                               1,1,1,0,0,0,0,1,1,0,1,1,
                               1,1,1,0,1,1,0,1,1,0,1,1,
                               1,1,1,0,1,1,0,1,1,0,1,1,
                               1,1,1,1,1,1,0,1,1,0,1,1,
                               1,1,0,0,0,0,0,0,1,0,0,1,
                               1,1,1,1,1,1,1,1,1,1,1,1};
link push(link stack,int x,int y);
link pop(link stack,int * x,int * y);
int chkExit(int ,int ,int ,int );
int main(void)
{
       int i,j;
       link path=NULL;
       int x=1;
       int y=1;
       cout<<"[迷宫的路径(0的部分)]"<<endl;
        for(i=0;i<10;i++)
         {
              for(j=0;j<12;j++)
              cout<<MAZE[i][j]<<"  ";
               cout<<endl;
         }

          while (x<=ExitX && y<ExitY)
          {
                MAZE[x][y]=2;
                if(NORTH==0)
                 {
                     x-=1;
                      path=push(path,x,y);
                 }
                 else if(SOUTH==0)
                {
                      x+=1;
                      path=push(path,x,y);
                 }
                 else if(WEST==0)
                  {
                       y-=1;
                        path=push(path,x,y);
                  }
                  else if(EAST==0)
                  {
                       y+=1;
                       path=push(path,x,y);
                  }

                  else if(chkExit(x,y,ExitX,ExitY)==1)
                  break;
                  else
                 {
                       MAZE[x][y]=2;
                       path=pop(path,&x,&y);
                  }
            }

 

//不知道为啥,这部分没有输出。
   cout<<"[老鼠走完的路路径(2的部分)]"<<endl;
   for(i=0;i<10;i++)
   {
    for(j=0;j<12;j++)
     cout<<MAZE[i][j]<<"  ";
    cout<<endl;
   }

  system("pause");
   return 0;
}

 

 

link push(link stack,int x,int y)
{
 link newnode;
 newnode=new node;
 if(!newnode)
 {
  cout<<"Error!"<<endl;
  return NULL;
 }

 newnode->x=x;
    newnode->y=y;
 newnode->next=stack;
 stack=newnode;
 return stack;
}

 

 

link pop(link stack,int *x,int *y)
{
 link top;
 if(stack!=NULL)
 {
  top=stack;
  stack=stack->next;
  *x=top->x;
  *y=top->y;
  delete top;
  return stack;
 }

 else
  *x=-1;
 return stack;
}

 


int chkExit(int x,int y,int ex,int ey)
{
   if( x==ex && y==ey )
   {
       if(NORTH==1 || SOUTH==1 || WEST==1 || EAST==2)
     return 1;
    if(NORTH==1 || SOUTH==1 || WEST==2 || EAST==1)
           return 1;
    if(NORTH==1 || SOUTH==2 || WEST==1 || EAST==1)
        return 1;
    if(NORTH==2 || SOUTH==1 || WEST==1 || EAST==1)
     return 1;
   }
  
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值