题意:给你一个迷宫。 先输出当左转优先的时候走的路程长度,再输出当右转优先时走的路程长度,最后输出从起点到终点的最短路程长度。

嗯嗯 奴哥活跃气氛的题。随便写了写。。

此题 知道了思路以后就是水题了。。。。

再随便缩缩行也就不到40行 (网上的题解好多200+的。。)

发现pair是个很坑的角儿。我一不小心就写挂了,重点是本机测试所有数据的输出结果都对。查不出来哪儿错的,,找了5min才找出来。



pair < int,int> *p=&q.front();然后就p->first p->second

改成

pair < int,int> p=q.front() p.first p.second

就AC了。(哎 讲语法课的时候浪过去了)

p是取的q.front()的地址,然后它pop出去了,相当于取了个随时都有可能变的地址,这虽然能水过本机的测试,但评测机就水不过去了。。。

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n,m,sx,sy,ex,ey,ansl,ansr,flag=0,Q,cases,vis[55][55];
char a[55][55],lx[]={-1,0,1,0},ly[]={0,1,0,-1},rx[]={1,0,-1,0},ry[]={0,1,0,-1};
inline void dfs(int x,int y,int f,int t,char *xx,char *yy){
if(Q)return;
if(a[x][y]=='E'){
if(flag%2){ansr=t,flag++,Q=1;return;}
else {ansl=t,flag++,Q=1;return;}
}
for(int i=0;i<=3;i++)
if(a[x+xx[(f+i)%4]][y+yy[(f+i)%4]]=='.'||a[x+xx[(f+i)%4]][y+yy[(f+i)%4]]=='E')
dfs(x+xx[(f+i)%4],y+yy[(f+i)%4],(f+i+3)%4,t+1,xx,yy);
}
int bfs(){
queue<pair<int,int> >q;
q.push(make_pair(sx,sy));
while(1){
pair<int,int>p=q.front();q.pop();
if(a[p.first][p.second]=='E')return vis[p.first][p.second];
for(int i=0;i<=3;i++)
if(!vis[p.first+lx[i]][p.second+ly[i]]&&(a[p.first+lx[i]][p.second+ly[i]]=='.'||a[p.first+lx[i]][p.second+ly[i]]=='E'))
vis[p.first+lx[i]][p.second+ly[i]]=vis[p.first][p.second]+1,q.push(make_pair(p.first+lx[i],p.second+ly[i]));
}
}
int main(){
scanf("%d",&cases);
while(cases--){
memset(vis,0,sizeof(vis));
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='S')sx=i,sy=j;
}
Q=0;dfs(sx,sy,0,1,lx,ly);
Q=0;dfs(sx,sy,0,1,rx,ry);
printf("%d %d %d\n",ansl,ansr,bfs()+1);
}
}

POJ 3083 BFS+DFS 40行的更多相关文章

  1. POJ 3083 Bfs+Dfs

    注意求最短路的时候用Bfs. #include<iostream> #include<stdio.h> using namespace std; int w,h,ex,ey,s ...

  2. Q - 迷宫问题 POJ - 3984(BFS / DFS + 记录路径)

    Q - 迷宫问题 POJ - 3984 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, ...

  3. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE

    POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...

  4. poj 3083 dfs,bfs

    传送门    Children of the Candy Corn Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  5. POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)

    思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水. 题意:Farmer John有一个 ...

  6. 搜索入门_简单搜索bfs dfs大杂烩

    dfs题大杂烩 棋盘问题  POJ - 1321 和经典的八皇后问题一样.  给你一个棋盘,只有#区域可以放棋子,同时同一行和同一列只能有一个棋子. 问你放k个棋子有多少种方案. 很明显,这是搜索题. ...

  7. Collect More Jewels(hdu1044)(BFS+DFS)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. 邻结矩阵的建立和 BFS,DFS;;

    邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...

  9. Python人脸识别最佳教材典范,40行代码搭建人脸识别系统!

    Face Id是一款高端的人脸解锁软件,官方称:"在一百万张脸中识别出你的脸."百度.谷歌.腾讯等各大企业都花费数亿来鞭策人工智能的崛起,而实际的人脸识别技术是否有那么神奇? 绿帽 ...

随机推荐

  1. CAD导出黑白色的pdf(com接口)

    主要用到函数说明: IMxDrawModifyTheColor 接口 用来修改图面所有对象的颜色,把它的颜色都修改成一个指定的值. IMxDrawModifyTheColor::Do 修改颜色,详细说 ...

  2. webAPP 原生APP 对比

    Web App即是一种框架型APP开发模式(HTML5 APP 框架开发模式),该开发具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部份构成,APP应用客户端只需安装应用的框架 ...

  3. 一个电商项目的Web服务化改造4:方案和架构,通用接口的定义和实现

        最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.     有点挑战,做完了,会有很大进步. 上一篇,我们明确了我们的"规范和约定". 从 ...

  4. 【[Offer收割]编程练习赛 14 A】小Hi和小Ho的礼物

    [题目链接]:http://hihocoder.com/problemset/problem/1505 [题意] [题解] 考虑Meet in the middle. 因为两个数的和不是很大; 直接用 ...

  5. 【codeforces 801B】Valued Keys

    [题目链接]:http://codeforces.com/contest/801/problem/B [题意] 定义一个对两个字符串x,y的f(x,y)函数; 返回的是一个字符串; 这个返回的字符串的 ...

  6. 混合了RBAC和ACL的权限系统(一) -- 用户组织结构

    最近的工作是一个基础设计,打造一个基于RBAC和ACL的权限基础组件. 这个基础组件的特点是:同时混合了RBAC和ACL的认证方式,也就是说同时提供系统级别的授权(RBAC)和对象级别的授权(ACL) ...

  7. Spring Boot访问mysql(JPA方式)最简单配置

    0.先推荐一个工具--lombok,pom文件如下: <dependency> <groupId>org.projectlombok</groupId> <a ...

  8. 利用C语言中的函数指针实现c++中的虚函数

    C语言中的函数指针 #include<stdio.h> int fun1(int a) { return a*a; } int fun2(int a) { return a*a*a; } ...

  9. [转]十五天精通WCF——第四天 你一定要明白的通信单元Message

    转眼你已经学了三天的wcf了,是不是很好奇wcf在传输层上面到底传递的是个什么鸟毛东西呢???应该有人知道是soap,那soap这叼毛长得是什么 样呢?这一篇我们来揭开答案... 一:soap到底长成 ...

  10. [Cypress] Create True end-to-end Tests with Cypress (Smoke test)

    Integration tests let us keep our tests fast and reliable. They also allow us to test scenarios that ...