POJ 3083 BFS+DFS 40行
来源:互联网 发布:网络吐槽类脱口秀节目 编辑:程序博客网 时间:2024/05/16 16:21
题意:给你一个迷宫。 先输出当左转优先的时候走的路程长度,再输出当右转优先时走的路程长度,最后输出从起点到终点的最短路程长度。
嗯嗯 奴哥活跃气氛的题。随便写了写。。
此题 知道了思路以后就是水题了。。。。
再随便缩缩行也就不到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); }}
0 0
- POJ 3083 BFS+DFS 40行
- poj 3083 DFS+DFS+BFS
- POJ 3083 BFS+DFS
- poj 3083 dfs+bfs
- poj 3083 bfs+dfs
- poj 3083 DFS+BFS
- poj 3083 搜索 DFS,BFS
- POJ 3083图搜 bfs+dfs
- POJ 3083(DFS+BFS)
- POJ 3083 (bfs + dfs)
- poj 3083 dfs+bfs最短路
- POJ 3083 - 变向DFS + BFS
- POJ 1062 BFS+DFS
- poj 1979DFS&&BFS
- POJ 2308 DFS+BFS
- POJ 1979 简单dfs||bfs
- POJ 1979 3669 DFS BFS
- POJ 3083 Children of the Candy Corn dfs+bfs
- 技术培训 | 资源编排,人人都可以成为架构师
- PRO-1:Day6-tftp配置,nfs配置 ,配置putty,网络配置,挂载文件系统
- 第7章 概括各组思想
- 自定义柱状图
- 关于java中的try-catch-finally语句和return
- POJ 3083 BFS+DFS 40行
- Sublime Text 3快捷键及常用插件
- 上拉刷新,下拉加载
- Mac下Caffe安装-无GPU
- 【android】:android阶段性学习之我见
- Spring-bean的属性-2
- 网络编程—线程
- 约瑟夫环_循环链表实现
- 当struts遇上json,没爱了