诡异的楼梯 HDU1180
这题做了很久
做好了感觉很简单。。。 现在做题思路更加清晰了
一个要点就是 当楼梯过不去的时候不能是先过去时间加2 必须得回去等一秒 否则queue的时间顺序会被打破
#include<bits/stdc++.h>
using namespace std; int sx,sy,ex,ey;int n,m;
char m1[][];
bool f[][]; struct node
{
int x,y,d;
node(int x=,int y=,int d=):x(x),y(y),d(d){}
}; void bfs()
{
memset(f,false,sizeof(f));
int dx[]={,,,-};
int dy[]={,,-,};
node u(sx,sy,);
queue<node>q;
q.push(u); while(!q.empty())
{
u=q.front();q.pop();
// printf("%d %d %d\n",u.x,u.y,u.d);
if(u.x==ex&&u.y==ey){printf("%d\n",u.d);return;} for(int i=;i<;i++)
{
node v(u.x+dx[i],u.y+dy[i],u.d+); if(v.x>=&&v.x<=n&&v.y>=&&v.y<=m&&m1[v.x][v.y]!='*')
{ if(m1[v.x][v.y]=='|')
{
if(i==||i==)//shuiping
{
if(v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} else if (v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];q.push(v);} }
if(i==||i==)
{
if(v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];f[v.x][v.y]=true;q.push(v);} else if (v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);}
} } if(m1[v.x][v.y]=='-')
{
if(i==||i==)//shuiping
{
if(v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];q.push(v);} else if (v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} }
if(i==||i==)
{
if(v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} else if (v.d%==&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];f[v.x][v.y]=true;q.push(v);}
} } else if(f[v.x][v.y]==false&&(m1[v.x][v.y]=='.'||v.x==ex&&v.y==ey))
{
f[v.x][v.y]=true;q.push(v);
} } } } } int main()
{ while(scanf("%d%d",&n,&m)==)
{
for(int i=;i<=n;i++)
{
scanf("%s",m1[i]+);
for(int j=;j<=m;j++)
{
if(m1[i][j]=='S'){sx=i;sy=j;}
if(m1[i][j]=='T'){ex=i;ey=j;} } } // printf("%d %d %d %d\n",sx,sy,ex,ey);
bfs();
//printf("pl"); } return ;
}
诡异的楼梯 HDU1180的更多相关文章
- 诡异的楼梯(bfs)hdu1180
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submiss ...
- hdu 1180 诡异的楼梯
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- hdu 1180 诡异的楼梯 (bfs)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Sub ...
- HDU 1180 诡异的楼梯(BFS)
诡异的楼梯 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status ...
- hdu 1180诡异的楼梯(bfs)
诡异的楼梯 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total Submis ...
- hdu 1180:诡异的楼梯(BFS广搜)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- HDU 1180 诡异的楼梯(超级经典的bfs之一,需多回顾)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1180 诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...
- HDU_1180_诡异的楼梯_BFS
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1180 诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Me ...
随机推荐
- [JLOI2015]装备购买 (高斯消元)
[JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...
- jquery中选择checkbox拼接成字符串,然后到后台拆分取值
jquery中选择checkbox拼接成字符串,然后到后台拆分取值 js中的代码 $("#btn").click(function(){ var chenked=$("i ...
- ubuntu下tensorflow 报错 libcusolver.so.8.0: cannot open shared object file: No such file or directory
解决方法1. 在终端执行: export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64” export CUDA_HOME=/usr/ ...
- k64 datasheet学习笔记4---Memory Map
1.前言 本文主要介绍K64地址空间的映射 2. System Memory Map 3. K64地址映射 4. Armv7m地址映射 4.1 Armv7M.System地址段(0XE0000000~ ...
- getOutputStream与getWriter方法
getOutputStream方法用于返回Servlet引擎创建的字节输出流对象,Servlet程序可以按字节形式输出响应正文.getWriter方法用于返回Servlet引擎创建的字符输出流对象,S ...
- vue 安装教程(自己安装过程及遇到的一些坑)
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- Tomcat启动startup.bat闪退和JRE_HOME错误
转载:http://blog.csdn.net/xushikuan/article/details/8132317 昨天学习Struts2,下载Tomcat7,太恶心了. 先是报个错,无法启动,基本意 ...
- redis介绍以及安装
一.redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的values类型相对更多,包括字符串.列表.哈希散列表.集合,有序集合. 这些数据类型都支持pus ...
- 【splunk】数据输入-文件目录 导入失败
今天用splunk的“数据输入-文件目录”自动监控文件并索引,结果失败了,完全没有出现我要的索引. 解决: 删除文件监控 改为一次性索引 再重新添加连续监控 原因: 尚不明确 https://answ ...
- hdu1506单调栈的宽度
很好的题目,单调栈上的宽度如何求 题解:https://blog.csdn.net/baidu_35643793/article/details/64440095 单调队列和单调栈都是去除没有用的数据 ...