uva 10047 The Monocycle(搜索)
好复杂的样子。。其实就是纸老虎,多了方向、颜色两个状态罢了,依旧是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(搜索)的更多相关文章
- UVA 10047 The Monocycle
大白图论第二题··· 题意:独轮车的轮子被均分成五块,每块一个颜色,每走过一个格子恰好转过一个颜色. 在一个迷宫中,只能向前走或者左转90度或右转90度(我曾天真的认为是向左走和向右走···),每个操 ...
- 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 ...
- UVA 10047 - The Monocycle BFS
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 11624 UVA 10047 两道用 BFS进行最短路搜索的题
很少用bfs进行最短路搜索,实际BFS有时候挺方便得,省去了建图以及复杂度也降低了O(N*M): UVA 11624 写的比较挫 #include <iostream> #include ...
- UVA.129 Krypton Factor (搜索+暴力)
UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...
- UVa 10047,独轮车
题目链接:https://uva.onlinejudge.org/external/100/10047.pdf 题目链接:http://vjudge.net/contest/132239#proble ...
- uva 11624 Fire!(搜索)
开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说.电视剧有意思多了 bfs裸体,关键是先把所有的着火点放入队列,分开一个一个做bfs会超时的 发现vis[][]是多余的,完全可以用 ...
- 模拟赛20181016 Uva 1040 状压+搜索 2005 ACM world final problem c
题目的隐含条件将这道题指向了最小生成树: 利用类似prim的方法,枚举所有子图并判断是否包含询问点,如果包含那么可以更新答案: 边统计边更新,且由于更新一定是向更多的点状态下更新,所以一定可以统计到答 ...
- uva 707(记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21261 思路:此题需要记忆化搜索,dp[x][y][t]表示当前状 ...
随机推荐
- C# 正则表达式 匹配IP地址
\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b
- Application.persistentDataPath 的一个小坑
打包之前在Android的Player Setting里面选择WriteAccess (写入访问) Internal Only:表示Application.persistentDataPath的路径是 ...
- Unity3D脚本中文系列教程(九)
Unity3D脚本中文系列教程(八) name 对象名称hideFlags 该物体是否被隐藏,保存在场景中或被用户修改继承的函数 GetInstanceID 返回该物体的实例id继承的类函数 oper ...
- c# 4.0新特性一览
原文:http://www.cnblogs.com/palo/archive/2009/03/01/1400949.html 终于静下心来仔细听了一遍Anders Hejlsberg(Visual S ...
- linux源码阅读笔记 jmpi指令(转)
jmpi是段间跳转指令,用于x86实模式下, 如:BOOTSEG = 0x0c70 jmpi 4, #BOOTSEG 假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当 ...
- Ubuntu环境下手动配置HBase0.94.25
/×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...
- 无法将 grub-efl-amd64-signed 软件包安装/target/ 中
64位win7下U盘安装64位ubuntu12.04,出现[无法将 grub-efl-amd64-signed 软件包安装/target/ 中]的错误 1. 已经确认为 12.04.2 的 Bug B ...
- 读书笔记:7个示例科普CPU Cache
本文转自陈皓老师的个人博客酷壳:http://coolshell.cn/articles/10249.html 7个示例科普CPU Cache (感谢网友 @我的上铺叫路遥 翻译投稿) CPU cac ...
- Android中XML格式数据的简单使用
源码: package com.wangzhu.demo; import java.io.IOException; import java.io.StringWriter; import javax. ...
- net中使用母版页
.net中使用母版页的优点 母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码.文本和控件元素:使用框架集:对通用元素使用包含文件:使用 ASP.NET 用户控件等.母版页 ...