hdu1180奇怪的楼梯……bfs迷阵……wa该16二级,我太渣滓
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int row,line,xx[4]={-1,1,0,0},yy[4]={0,0,-1,1};
char map[100][100];
bool vis[100][100];
struct node
{
int x,y,step;
}st;
void init()
{
int i,j;
bool flag=1;
for(i=0;i<row;i++)
scanf("%s",map[i]);
for(i=0;flag&&i<row;i++)
for(j=0;flag&&j<line;j++)
if(map[i][j]=='S')
{
st.x=i;
st.y=j;
st.step=0;
flag=0;
}
memset(vis,0,sizeof(vis));
vis[st.x][st.y]=1;
}
bool iscan(int x,int y)
{
if(x<0||y<0||x>=row||y>=line||vis[x][y]||map[x][y]=='*')
return 0;
return 1;
}
void bfs()
{
int i;
queue<node>qq;
node t1,t2;
qq.push(st);
while(qq.size())
{
t1=qq.front();
qq.pop();
if(map[t1.x][t1.y]=='T')
{
printf("%d\n",t1.step);
return;
}
for(i=0;i<4;i++)
{
t2=t1;
t2.x+=xx[i];
t2.y+=yy[i];
t2.step++;
if(!iscan(t2.x,t2.y))
continue;
if(map[t2.x][t2.y]=='.'||map[t2.x][t2.y]=='T')
{
vis[t2.x][t2.y]=1;
qq.push(t2);
}
else if((map[t2.x][t2.y]=='|'&&!(t1.step&1))||(map[t2.x][t2.y]=='-'&&(t1.step&1)))
{
if(i>1)
{
t2=t1;
t2.step++;
qq.push(t2);
continue;
}
t2.x+=xx[i];
if(!iscan(t2.x,t2.y))
continue;
vis[t2.x][t2.y]=1;
qq.push(t2);
}
else
{
if(i<2)
{
t2=t1;
t2.step++;
qq.push(t2);
continue;
}
t2.y+=yy[i];
if(!iscan(t2.x,t2.y))
continue;
vis[t2.x][t2.y]=1;
qq.push(t2);
}
}
}
}
int main()
{
while(scanf("%d%d",&row,&line)!=EOF)
{
init();
bfs();
}
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
hdu1180奇怪的楼梯……bfs迷阵……wa该16二级,我太渣滓的更多相关文章
- hdu1180 诡异的楼梯 bfs
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1180/ 题目和不同的bfs有个不同的地方就是存在横着的或者竖着的楼梯,楼梯每过一个时刻就改变一次横竖的走向,人可 ...
- HDU1180:诡异的楼梯(bfs+优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1180 Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里, ...
- hdu - 1180 诡异的楼梯 (bfs+优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1180 注意点就是楼梯是在harry移动完之后才会改变方向,那么只要统计到达这个点时间奇偶性,就可以知道当前楼梯是 ...
- hdu 1180 诡异的楼梯 (bfs)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Sub ...
- hdu 1180诡异的楼梯(bfs)
诡异的楼梯 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total Submis ...
- 洛谷P1135 奇怪的电梯 BFS例题
好,这是一道黄题.几个月前(2017.10.29)的我拿了可怜的20分. 这是当年的蒟蒻代码 #include <cstdio> #include <iostream> #in ...
- HDU1180:诡异的楼梯
传送门 题意 迷宫搜索 分析 这题写起来挺简单的,锻炼搜索基本功,一开始用记忆化搜索TLE了,改用访问标记,0ms过了,用优先队列保证终点最快达到,我会在代码中提供一些强力数据 trick 1.遇到梯 ...
- hdu 1548 楼梯 bfs或最短路 dijkstra
http://acm.hdu.edu.cn/showproblem.php?pid=1548 Online Judge Online Exercise Online Teaching Online C ...
- HDU 1548 A strange lift 奇怪的电梯(BFS,水)
题意: 有一座电梯,其中楼层从1-n,每层都有一个数字k,当处于某一层时,只能往上走k层,或者下走k层.楼主在a层,问是否能到达第b层? 思路: 在起点时只能往上走和往下走两个选择,之后的每层都是这样 ...
随机推荐
- [TypeScript] Sharing Class Behavior with Inheritance in TypeScript
Typescript classes make inheritance much easier to write and understand. In this lesson we look into ...
- 记一次内存泄漏调试(memory leak)-Driver Monkey
Author:DriverMonkey Mail:bookworepeng@Hotmail.com Phone:13410905075 QQ:196568501 硬件环境:AM335X 软件环境:li ...
- Spring Boot初步认识
Spring Boot 来源及背后 Spring Boot开发始于 2013 年,伴随Spring4.0而生,2014 年 4 月发布 1.0.0 版本.当前版本1.4.0,http://projec ...
- UVA 10106 Product (大数相乘)
Product The Problem The problem is to multiply two integers X, Y. (0<=X,Y<10250) The Input The ...
- Qt 使用qDebug() 打印Qlist 容器数据(将QDebug()定义成某个类的友元函数)
当QList<T>容器中的数据用qDebug() 打印时 ,假如 T 是内置类型(int float ...)与 打印一个字符串使用完全一样,假如T 是一个CustomerClass 那 ...
- Android 图片压缩,基于比例和质量压缩
package cc.util.android.image; import java.io.ByteArrayOutputStream; import java.io.File; import jav ...
- php 复制粘贴覆盖文件
<?php /** * 操纵文件类 * * 例子: * FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹 * FileUtil::cre ...
- Java算法--串的简单处理
题目例如以下: 串的处理 在实际的开发工作中.对字符串的处理是最常见的编程任务. 本题目即是要求程序对用户输入的串进行处理.详细规则例如以下: 1. 把每个单词的首字母变为大写. 2. 把数字与字母之 ...
- C# 使用 RabbitMQ
1. RabbitMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接 ...
- 五一巨献,问答有礼,105QB送给IT互联网界的劳动人民
活动主题:五一巨献,问答有礼,105QB送给IT互联网界的劳动人民活动时间:4月30日晚上10点~5月2日晚上10点活动期数:第1期,20150401 奖品:105QB获奖人数:20人1~5:每人10 ...