好复杂的样子。。其实就是纸老虎,多了方向、颜色两个状态罢了,依旧是bfs。

更新的时候注意处理好就行了,vis[][][][]要勇敢地开。

不过这个代码交了十几遍的submission error,手都软了

代码应该是没有问题,也可以参考http://blog.csdn.net/wjjayo/article/details/5809911

 #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; const int MAXN=; struct P{
int x,y,d,c;
int bfn;
P(){}
P(int _x,int _y,int _d,int _c,int _bfn):x(_x),y(_y),d(_d),c(_c),bfn(_bfn){}
}que[MAXN*MAXN*]; char mp[MAXN][MAXN],n,m;
int vis[MAXN][MAXN][][],tot;
int dis[][]={-,,,-,,,,};
int ex,ey; void bfs(int a,int b)
{
int l,r;
l=r=;
que[r].x=a;
que[r].y=b;
que[r].d=;
que[r].c=;
que[r++].bfn=;
vis[a][b][][]=;
while(l<r)
{
int x=que[l].x;
int y=que[l].y;
int d=que[l].d;
int c=que[l].c;
int bfn=que[l++].bfn; if(x==ex&&y==ey&&c==)
break; int dx=dis[d][];
int dy=dis[d][];
if(!vis[x+dx][y+dy][d][(c+)%]&&mp[x+dx][y+dy]!='#'&&x+dx>=&&x+dx<n&&y+dy>=&&y+dy<m){
que[r++]=P(x+dx,y+dy,d,(c+)%,bfn+);
vis[x+dx][y+dy][d][(c+)%]=;
}
if(!vis[x][y][(d+-)%][c]){
que[r++]=P(x,y,(d+-)%,c,bfn+);
vis[x][y][(d+-)%][c]=;
}
if(!vis[x][y][(d+)%][c]){
que[r++]=P(x,y,(d+)%,c,bfn+);
vis[x][y][(d+)%][c]=;
}
}
if(l<r)
printf("Case #%d\nminimum time = %d sec\n",++tot,que[l-].bfn);
else
printf("Case #%d\ndestination not reachable\n",++tot);
} int main()
{
int sx,sy;
int i,j;
tot=;
while(scanf("%d%d",&n,&m)!=EOF)
{ if(tot)
printf("\n");
if(!n&&!m)
return ;
for(i=;i<n;i++)
{
getchar();
for(j=;j<m;j++)
{
scanf("%c",&mp[i][j]);
if(mp[i][j]=='S'){
sx=i;sy=j;
}
if(mp[i][j]=='T'){
ex=i;ey=j;
}
}
}
bfs(sx,sy);
}
return ;
}

uva 10047 The Monocycle(搜索)的更多相关文章

  1. UVA 10047 The Monocycle

    大白图论第二题··· 题意:独轮车的轮子被均分成五块,每块一个颜色,每走过一个格子恰好转过一个颜色. 在一个迷宫中,只能向前走或者左转90度或右转90度(我曾天真的认为是向左走和向右走···),每个操 ...

  2. UVA 10047 The Monocycle (状态记录广搜)

    Problem A: The Monocycle  A monocycle is a cycle that runs on one wheel and the one we will be consi ...

  3. UVA 10047 - The Monocycle BFS

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  4. UVA 11624 UVA 10047 两道用 BFS进行最短路搜索的题

    很少用bfs进行最短路搜索,实际BFS有时候挺方便得,省去了建图以及复杂度也降低了O(N*M): UVA 11624 写的比较挫 #include <iostream> #include ...

  5. UVA.129 Krypton Factor (搜索+暴力)

    UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...

  6. UVa 10047,独轮车

    题目链接:https://uva.onlinejudge.org/external/100/10047.pdf 题目链接:http://vjudge.net/contest/132239#proble ...

  7. uva 11624 Fire!(搜索)

    开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说.电视剧有意思多了 bfs裸体,关键是先把所有的着火点放入队列,分开一个一个做bfs会超时的 发现vis[][]是多余的,完全可以用 ...

  8. 模拟赛20181016 Uva 1040 状压+搜索 2005 ACM world final problem c

    题目的隐含条件将这道题指向了最小生成树: 利用类似prim的方法,枚举所有子图并判断是否包含询问点,如果包含那么可以更新答案: 边统计边更新,且由于更新一定是向更多的点状态下更新,所以一定可以统计到答 ...

  9. uva 707(记忆化搜索)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21261 思路:此题需要记忆化搜索,dp[x][y][t]表示当前状 ...

随机推荐

  1. HTML5 本地裁剪图片

    下面奉上我自己写的一个demo,代码写得比较少,很多细节不会处理.如果有不得当的地方恳请指教,谢谢啦 ^_^ ^_^   功能实现步奏:   一:获取文件,读取文件并生成url   二:根据容器的大小 ...

  2. C# IL DASM 使用

    IL DASM反编译工具 使用C#的猿人或多或少都会对微软的IL反编译工具(ildasm.exe)有所认识.我最早接触到这工具是公司同事使用他反编译exe程序,进行研读和修改.感觉他还是很强大. IL ...

  3. [nowCoder] 两个不等长数组求第K大数

    给定两个有序数组arr1和arr2,在给定一个整数k,返回两个数组的所有数中第K小的数.例如:arr1 = {1,2,3,4,5};arr2 = {3,4,5};K = 1;因为1为所有数中最小的,所 ...

  4. 前端学习笔记汇总(之merge方法)

    学习笔记 关于Jquery的merge方法 话不多说,先上图 使用jquery时,其智能提示如上,大概意思就是合并first和second两个数组,得到的结果是first+(second去重后的结果) ...

  5. unity3d 射线扫描 忽略图层

    原地址:http://blog.csdn.net/w88193363/article/details/38331205 函数说明 static RaycastHit2D[] RaycastAll(Ve ...

  6. Capsule:开源的 JVM 应用部署工具

    [编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...

  7. Java中finalize()

    垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法(你可以 写程序验证这个结论),一般的纯Java编写的Class不需要重新覆盖这个方法,因为Object已经实现了一个默认的,除非我们 ...

  8. CF 295A Greg and Array (两次建树,区间更新,单点查询)

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  9. [SQL Server 系] -- 模糊查询

    SQL Server中的通配符有下面四种 通配符 说明 % 包含零个或多个字符的任意字符串 _(下划线) 任意单个字符 [ ] 任意在指定范围或集合中的单个字符 [^ ] 任意不在指定范围或集合中的单 ...

  10. windows下eclipse远程连接hadoop错误“Exception in thread"main"java.io.IOException: Call to Master.Hadoop/172.20.145.22:9000 failed ”

    在VMware虚拟机下搭建了hadoop集群,ubuntu-12.04,一台master,三台slave.hadoop-0.20.2版本.在 master机器上利用eclipse-3.3连接hadoo ...