hdu1242 Rescue 队列加广搜 一个=号纠结了我很久

 
#include<stdio.h>
#define max 201

struct point{
 int x,y,count;
}queue[max*max],pri_queue[max*max];
char map[max][max];
int n,m,next[4][2]={0,1,0,-1,1,0,-1,0};

int bfs()
{
 int i,j,num,s,x,y;
 num=s=0;
 for(i=0;i<=num;i++){
  map[queue[i].x][queue[i].y]='#';

  for(j=0;j<4;j++){
   x=queue[i].x+next[j][0];
   y=queue[i].y+next[j][1];

   if(x<n && x>=0 && y<m && y>=0 && map[x][y]!='#'){

    if(map[x][y]=='x'){
     pri_queue[s].x=x;
     pri_queue[s].y=y;
     pri_queue[s++].count=queue[i].count+2;
    }
    else if(map[x][y]=='.'){
     queue[++num].x=x;
     queue[num].y=y;
     queue[num].count=queue[i].count+1;
    }
    else
     return ++queue[i].count;;
   }
  }
  for(j=0;j<s;j++)
   queue[++num]=pri_queue[j];
  s=0;
 }
 return 0;

}
int main(){
 int i,j,t,a,b;
 while(scanf("%d%d",&n,&m)!=EOF){
  for(i=0;i<n;i++){
   scanf("%s",map[i]);

   for(j=0;j<m;j++){
    if(map[i][j]=='a'){
     a=i;
     b=j;
    }
   }
  }

  queue[0].x=a;
  queue[0].y=b;
  queue[0].count=0;
  t=bfs();
  if(t)
    printf("%d\n",t);
  else 
   puts("Poor ANGEL has to stay in the prison all his life.");
 }
 return 0;
}

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值