TOJ_12470
#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]={0};
int g[10];
int f=0;
node queue[100]={0};
int head=0,tail=0;
int flagx,flagy,flag1x,flag1y;
//进栈
void en(node E)
{
queue[tail++]=E;
}
//出栈
node qe()
{
return queue[head++];
}
void bfs()
{
int b[10][10]={0};
node cur={};
node ns={};
first.x=flagx;
first.y=flagy;
en(first);
b[first.x][first.y]=1;
int d1=1,d2=0,d3=0,d4=0;
printf("%d %d %d\n",first.x ,first.y,first.step);
while(head<tail)
{
cur=qe();
printf("%d %d\n",cur.x ,cur.y); //已经数字入队了
if(cur.x==flag1x&&cur.y==flag1y)
{
g[f++]=cur.step;
break;
}
for(int i=0;i<4;i++)
{
ns=cur;
ns.x=ns.x+zx[i];
ns.y=ns.y+zy[i];
printf("%d %d\n",ns.x,ns.y);
printf("%d %d\n",cur.x,cur.y);
//直走
if(ns.x-cur.x==-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++;
d2=0;
d3=0;
d4=0;
if(d1==1)
ns.step++;
ns.step++;
//printf("step=%d\n",ns.step);
en(ns);
}
}
}
//后退
if(ns.x-cur.x==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=0;
d3=0;
d4++;
if(d4==1)
ns.step++;
ns.step++;
//printf("step=%d\n",ns.step);
en(ns);
}
}
}
//左转
if(ns.y-cur.y==-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(ns.y-cur.y==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=0;
d3++;
d4=0;
if(d3==1)
ns.step++;
ns.step++;
//printf("step=%d\n",ns.step);
en(ns);
}
}
}
}
}
if(cur.x!=flag1x&&cur.y!=flag1y)
{
g[f++]=-1;
}
}
void main()
{
int t,w,l;
scanf("%d",&t);
for(int j=0;j<t;j++)
{
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();
}
for(int i=0;i<f;i++)
printf("%d\n",g[i]);
}
TOJ_12470的更多相关文章
随机推荐
- uploadify 文件上传报http 302错误
uploadify文件上传会报http 302错误,在配置文件中将处理上传的通用类取消验证, 假设上传的通用处理类是fileUpload.ashx,则在配置文件同添加下面过滤配置能解决问题. < ...
- oracle导入导出dmp 解决exp-00011
解决办法,批量修改Segment.1先查找所有数据表为空的表 select table_name from user_tables where NUM_ROWS=0; 2若查不出数据,是因为 NUM_ ...
- 5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系
前言:用了这么久js,对于它的原型链一直有种模糊的不确切感,很不爽,隧解析之. 本文主要解决的问题有以下三个: (1)constructor 和 prototype 以及实例之间啥关系? (2)pro ...
- sd卡不能格式化
可能是读卡器坏了,还真遇到过,花了一下午,各种尝试,最后发现只是读卡器坏了.
- 【Mac】使用QuickTime Player录制屏幕录像
我门分享都需要用到录屏软件,Mac系统有自带的QuickTime Player软件可以录制屏幕录像 环境与工具 1.mac系统 2.mac自带的QuickTime Player软件 使用方法 1.打开 ...
- CSS 关键的基础知识
今晚看了 百度传课 一门关于CSS的课程, 感觉不错, 随手记了点儿笔记, 供以后查阅. =================================================== pos ...
- idea开发工具下报Set language level to 6-@Override in interfaces的解决方法
idea开发工具下报Set language level to 6-@Override in interfaces的解决方法 实现接口时报如下错误:Set language level to 6-@O ...
- 2018.09.14 codeforces364D(随机化算法)
传送门 根据国家集训队2014论文集中胡泽聪的随机化算法可以通过这道题. 对于每个数,它有12" role="presentation" style="posi ...
- AngularJS标准Web业务流程开发框架—1.AngularJS模块以及启动分析
前言: AngularJS中提到模块是自定义的模块标准,提到这不得不说AngularJS是框架中的老大哥,思想相当的前卫..在这框架满天横行的时代,AngularJS有些思想至今未被超越,当然仁者见仁 ...
- 百度Webuploader 大文件分片上传(.net接收)
版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...