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的更多相关文章
随机推荐
- 演示Spring框架的JDBC模板的简单操作
1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...
- Spring框架的AOP技术之通知类型
1. 通知类型 * @Before -- 前置通知 * @AfterReturing -- 后置通知 * @Around -- 环绕通知(目标对象方法默认不执行的,需要手动执行) * @After - ...
- java 错误: 找不到或无法加载主类
这个问题应该很常见的,笔者经常手工编译一些测试代码或者小工具,经常用到 javac和java来编译并运行一些简单的小工具. 以Hello World来测试. HelloWorld.java publi ...
- css浮动的元素居中
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Codeforces 608B. Hamming Distance Sum 模拟
B. Hamming Distance Sum time limit per test: 2 seconds memory limit per test:256 megabytes input: st ...
- vue run dev 8080端口被占用
用vue 官方脚手架vue-cli构建项目容易碰到一些小错误 vue init webpack project-name ...... cd project-name npm install npm ...
- 我所理解的 Laravel 请求 生命周期
转载自:https://laravel-china.org/topics/3343/my-understanding-of-the-laravel-request-life-cycle 当你使用一个工 ...
- 03 Maven 坐标与依赖
Maven 坐标与依赖 Maven 的一大功能是管理项目依赖.为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标.本章将详细分析 Mav ...
- db2学习笔记
a.服务端安装 v11.1_win64_expc.zip 官网下载 b.客户端安装 Toad for DB2 Freeware 6.1 百度找找 .建数据库 create database HRA_G ...
- kafka系列 -- 多线程消费者实现
看了一下kafka,然后写了消费Kafka数据的代码.感觉自己功力还是不够. 不能随心所欲地操作数据,数据结构没学好,spark的RDD操作没学好. 不能很好地组织代码结构,设计模式没学好,面向对象思 ...