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]表示当前状 ...
随机推荐
- mac mysql安装
一.安装 1.下载软件包直接安装即可: http://rj.baidu.com/soft/detail/25675.html?ald 安装完成后root默认密码为空: 二.修改密码 直接修改密码会提示 ...
- 【Vijos】【1164】曹冲养猪
中国剩余定理 没啥重要的……模板题,中国剩余定理就是解出模线性方程组的一个可行解(好像也是唯一解?) 这是一种神奇的构造方法……明白了为什么这样构造是对的就行了=.=至于怎么想到这种构造方法的……去问 ...
- jquery获取标签内容,编辑内容
一.获取页面元素 三种方式获取页面中元素的内容. input标签使用:.val()获取 标签下的html及文本内容:.html() 仅获取标签下的纯文本内容:.text() <head> ...
- GCD异步加载网络图片
//image dispatch_queue_t network_queue; network_queue = dispatch_queue_create("com.myapp.networ ...
- NGUI UIGrid 动态刷新布局 && BUG FIX
/// <summary> /// "1" => 对应的一个UISpirte,"1234" => 对应四个预设 /// </sum ...
- SQL事物用法【转】
SQL事务 一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统上执行并发操作时事务是作为 ...
- java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. * * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...
- Netty 的Downstream 和 Upstream
Netty的Downstream 和 Upstream 如果一个event从第一个handler传递直到最后一个handler就是 Upstream 相反的如果一个event从最后一个handler传 ...
- Matlab中编译C++文件
今天在跑<Robust Object Tracking via Sparsity-based Collaborative Model>这篇文章的代码时候,发现出现如下错误: 发现错误时由于 ...
- LR_问题_运行场景时提示scripts you are running in invalid
问题描述 脚本在virtual user generator中运行正常. 在Controller中运行场景时报错: the target you defined cannot be reached. ...