TOJ2470
#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();
}
TOJ2470的更多相关文章
随机推荐
- DataTable的序列化和反序列化
/// <summary> /// DataTable序列化 /// </summary> /// <param name="dt"></ ...
- 一、消息队列之ActiveMQ的安装、配置和C#样例代码
最近有时间了,研究一下消息队列ActvieMQ,结合自己的实践和网上的一些大家内容,整理如下,所有步骤和链接均是正确的. 1.ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲 ...
- mysql对emoji的支持
步骤: 升级mysql数据库到5.5.3+ 修改database.table和column字符集 alter database DATABASE_NAME character set = utf8mb ...
- Mockplus是如何节省你的原型时间的?
还在用老牌原型工具一点点绘制产品原型吗?还在为实现一个满意的交互而绞尽脑汁吗?还在为无法和用户高效沟通而发愁吗?朋友,现在是快速原型的时代了.时间不等人,当你精雕细琢完成产品启动页的时候,别人的原型已 ...
- 2018.07.24 bzoj3531: [Sdoi2014]旅行(树链剖分+动态开点)
传送门 树链剖分. 如何维护? 如果颜色少直接每种颜色一颗线段树走人. 但这题颜色数量不大于1e5" role="presentation" style="po ...
- 实现WIFI MAC认证与漫游
前言 单位里有10来个网件的AP(WNAP210),需要对接入端(主要是手机)进行MAC认证,原来采用AP本地MAC认证,但是人员经常变动(离职),另外人员的岗位(流水线)也经常调整,这样就需在变动后 ...
- [K8S]污点调度
如果不希望某个节点被调度可以使用以下命令进行设置 kubectl taint node master01 node-role.kubernetes.io/master="":No ...
- scrapy windows 安装
windows 7 系统下参照官网安装总是会提示出错,现在整理一下安装的流程 1.安装 python 2.7,添加环境变量 C:\Python27\;C:\Python27\Scripts\; 在 C ...
- 通过wsdl生成client 的几种方式
wsimport 位置 %JAVA_HOME%/bin/wsimport.exe 帮助 wsimport -help Usage: wsimport [options] <WSDL_URI> ...
- Node.js使用MySQL的连接池
使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...