这题做了很久

做好了感觉很简单。。。 现在做题思路更加清晰了

一个要点就是   当楼梯过不去的时候不能是先过去时间加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的更多相关文章

  1. 诡异的楼梯(bfs)hdu1180

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submiss ...

  2. hdu 1180 诡异的楼梯

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Subm ...

  3. hdu 1180 诡异的楼梯 (bfs)

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Sub ...

  4. HDU 1180 诡异的楼梯(BFS)

    诡异的楼梯 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status ...

  5. hdu 1180诡异的楼梯(bfs)

    诡异的楼梯 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submis ...

  6. hdu 1180:诡异的楼梯(BFS广搜)

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Subm ...

  7. HDU 1180 诡异的楼梯(超级经典的bfs之一,需多回顾)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1180 诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)     ...

  8. HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...

  9. HDU_1180_诡异的楼梯_BFS

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1180 诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)    Me ...

随机推荐

  1. Java基础编程题——分别统计出其中汉字、英文字母、空格、数字和其它字符的个数

    package com.yangzl.basic; import java.util.Scanner; /** * 分别统计出其中汉字.英文字母.空格.数字和其它字符的个数 * @author Adm ...

  2. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  3. Java SE之Java中堆内存和栈内存[转/摘]

    [转/摘]1-3Java中堆内存和栈内存 注解:内存(Memory)即 内存储器,主存,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器(辅存)交换的数据. Java中把内存分为两种:栈 ...

  4. Mac下压力测试工具siege

    安装: brew install siege 用法: siege -c 并发数 -t 运行测试时间 URL 如: siege -c 1000 -t 5S URL 这里要注意的是-t后面的时间要带单位, ...

  5. 如何在同一台服务器上部署两个tomcat

    因为测试的需要,有时我们必须在同一个服务器上部署两个tomcat,然后去做应用的部署,那么很多同学可能会觉得比较为难,找的资料也比较的不齐全,那么今天华华就来给大家讲讲如何部署2个tomcat,并能够 ...

  6. 前端 - Ajax (1)

    Ajax 主要作用 用于隐式提交,有别于input 提交时不会跳转/刷新页面. 前端: html 代码:(id) <p> <input id="user" typ ...

  7. Android常用网络请求框架Volley Retrofit (okHttp)

    Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient.在 Android 5.0 的时候 Google 就不推荐使用 HttpClient ...

  8. fastdfs+nginx集群高可用搭建的一些坑!!记录一下

    首先我这里是三台节点,都搭tracker和storage,然后使用nginx做负载,只建一个group1,三个tracker! 搭建步骤比较麻烦,里面有很多坑需要注意,步骤就不啰嗦了,这里主要记录几个 ...

  9. 【转】Python中的字符串与字符编码

    [转]Python中的字符串与字符编码 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常 ...

  10. 腾讯云启动数据库进程,提示No such host is known

    回想一下,系统是否切换过外网IP,切换过则检查/etc/hosts文件中IP和主机名对应关系 现象:出错前一直做域名解析