码迷,mamicode.com
首页 > 其他好文 > 详细

TOJ_12470

时间:2016-12-03 14:45:30      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:i++   first   step   highlight   lag   log   break   scan   std   

#include <stdio.h>

struct node{
int x;
int y;
int step;
}first;

int zx[4]={-1,0,1,0};
int zy[4]={0,-1,0,1};
int a[10][10];

node queue[100]={0};
int head=0,tail=0;
int b[10][10]={0};
int flagx,flagy,flag1x,flag1y;


//进栈
void en(node E)
{
queue[tail++]=E;
}

//出栈
node qe()
{
return queue[head++];
}


void bfs()
{
first.x=flagx;
first.y=flagy;
en(first);
b[first.x][first.y]=1;
node cur={};
node ns={};
int d1=1,d2=0,d3=0,d4=0;
while(head<tail)
{
cur=qe();
printf("%d %d\n",cur.x ,cur.y);
if(cur.x==flag1x&&cur.y==flag1y)
{
printf("%d\n",cur.step);
break;
}


for(int i=0;i<4;i++)
{
ns=cur;
ns.x=ns.x+zx[i];
ns.y=ns.y+zy[i];
//直走
if(i==0)
{
if(a[ns.x][ns.y]==‘.‘||a[ns.x][ns.y]==‘T‘)
{
if(!b[ns.x][ns.y])
{
b[ns.x][ns.y]=1;
d1++;
d2=0;
d3=0;
d4=0;
if(d1==1)
ns.step++;
ns.step++;
printf("step=%d\n",ns.step);
en(ns);

}
}
}
//后退
if(i==2)
{
if(a[ns.x][ns.y]==‘.‘||a[ns.x][ns.y]==‘T‘)
{
if(!b[ns.x][ns.y])
{
b[ns.x][ns.y]=1;
d1=0;
d2=0;
d3=0;
d4++;
if(d4==1)
ns.step++;
ns.step++;
printf("step=%d\n",ns.step);
en(ns);
}
}
}
//左转
if(i==1)
{
if(a[ns.x][ns.y]==‘.‘||a[ns.x][ns.y]==‘T‘)
{
if(!b[ns.x][ns.y])
{
b[ns.x][ns.y]=1;
d1=0;
d2++;
d3=0;
d4=0;
if(d2==1)
ns.step++;
ns.step++;
printf("step=%d\n",ns.step);
en(ns);
}
}
}
//右转
if(i==3)
{
if(a[ns.x][ns.y]==‘.‘||a[ns.x][ns.y]==‘T‘)
{
if(!b[ns.x][ns.y])
{
b[ns.x][ns.y]=1;
d1=0;
d2=0;
d3++;
d4=0;
if(d3==1)
ns.step++;
ns.step++;
printf("step=%d\n",ns.step);
en(ns);
}
}
}
}
}
}

void main()
{
int t,w,l;
scanf("%d %d",&w,&l);
for(int i=0;i<w;i++)
{
getchar();
for(int j=0;j<l;j++)
{
scanf("%c",&a[i][j]);
if(a[i][j]==‘S‘)
{
flagx=i;
flagy=j;
a[i][j]=‘#‘;
}

if(a[i][j]==‘T‘)
{
flag1x=i;
flag1y=j;
}
}
}
first.step=0;
bfs();

}

  

TOJ_12470

标签:i++   first   step   highlight   lag   log   break   scan   std   

原文地址:http://www.cnblogs.com/liunx1109/p/6128341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!