UVa 10047 自行车 状态记录广搜
每个格子(x,y,drection,color)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
char a[][];
int vis[][][][];
int n,m;
int dx[]={-,,,};
int dy[]={,,,-};
struct node{
int x,y,di,co,t;
node(int xx,int yy,int d,int c,int st)
{
x=xx;y=yy;di=d;co=c;t=st;
}
};
queue<node> q;
void bfs()
{
while(!q.empty())
{
node u=q.front();
q.pop();
if(a[u.x][u.y]=='T'&&u.co==)
{
printf("minimum time = %d sec\n",u.t);
return;
}
int x=u.x,y=u.y,co=u.co;
int di=(u.di+)%;//向右转
if(!vis[x][y][di][co])
{
vis[x][y][di][co]=;
q.push(node(x,y,di,co,u.t+));
}
di=(u.di+)%;//向左转
if(!vis[x][y][di][co])
{
vis[x][y][di][co]=;
q.push(node(x,y,di,co,u.t+));
}
di=u.di;//前进
x+=dx[di];y+=dy[di];
co=(co+)%;//下一种颜色
if(x<n&&x>=&&y<m&&y>=&&a[x][y]!='#'&&!vis[x][y][di][co])
{
q.push(node(x,y,di,co,u.t+));
vis[x][y][di][co]=;
}
}
printf("destination not reachable\n");
}
int main()
{
int ss=;
while(scanf("%d%d",&n,&m)&&n&&m)
{
if(ss>) printf("\n");
memset(vis,,sizeof(vis));
while(!q.empty()) q.pop();
for(int i=;i<n;i++)
for(int j=;j<m;j++)
{
cin>>a[i][j];
if(a[i][j]=='S')
{
q.push(node(i,j,,,));
vis[i][j][][]=;
}
}
printf("Case #%d\n",ss++);
bfs();
}
return ;
}
UVa 10047 自行车 状态记录广搜的更多相关文章
- 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 ...
- hdu5025 状态压缩广搜
题意: 悟空要救唐僧,中途有最多就把钥匙,和最多五条蛇,要求就得唐僧并且拿到所有种类的钥匙(两个1只拿一个就行),拿钥匙i之前必须拿到钥匙i-1,打蛇多花费一秒,问救出唐僧并且拿到所有种类 ...
- UVa 1600 Patrol Robot(三维广搜)
A robot has to patrol around a rectangular area which is in a form of m x n grid (m rows and ncolumn ...
- UVa (一道比较复杂的广搜) 816 Abbott’s Revenge
题意: 给出一个迷宫,在迷宫的节点处,面向某个方向只能向给定的方向转弯.给出起点和终点输出迷宫的最短路径,这里指的是刚刚离开起点的时刻,所以即使起点和终点重合路径也非空. 分析: 用三个变量来表示状态 ...
- POJ1324贪吃蛇(状态压缩广搜)
题意: 给你一个地图,有的地方能走,有的地方不能走,然后给你一条蛇,问你这条蛇的头部走到1,1的位置的最少步数,注意,和贪吃蛇不太一样,就是蛇咬到自己身体的那个地方,具体怎么不一样自己模拟 ...
- hdu 5025 Saving Tang Monk 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- Oj 24260: Lilypad Pond (神奇广搜题,状态搜索)
题目 为了让奶牛们娱乐和锻炼,约翰建造了一个美丽的池塘.这个池塘是矩形的,可以分成M×N个方格.一些格子是坚固得令人惊讶的莲花,还有一些是岩石,其余的只是美丽,纯净,湛蓝的水.贝西正在练习芭蕾舞,她站 ...
- POJ 3984 迷宫问题 记录路径的广搜
主要是学一下如何在广搜中记录路径:每找到一个点我就记录下这个点是由那个点得来的,这样我找到最后个点后,我就可以通过回溯得到我走过的路径,具体看代码吧~ #include<cstdio> # ...
随机推荐
- DFA算法以及ios中OC实现DFA
DFA不同于苹果手机的idfa DFA全称为:Deterministic Finite Automaton,即确定有穷自动机.其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标 ...
- Custom Configuration 的两种方法:1.Configuration Sections
第一种Configuration Sections 1.App.config 2.CustomConfigurationManager.cs 3.TestProgram.cs. App.config ...
- nginx不记录指定文件类型日志
1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwa ...
- 嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray
在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的.就跟if else语句一样,如果if中套if,if中再套if,写的 ...
- 【HANA系列】SAP 【第二篇】EXCEL连接SAP HANA的方法(ODBC)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP [第二篇]EXCEL连接 ...
- P2951 【[USACO09OPEN]捉迷藏Hide and Seek】
典型的最短路,而且只要再加一点点操作,就能得到答案 所以可以直接套模板 具体看程序:: #include<cstdio> #include<queue>//队列专属头文件 #i ...
- 浅谈python中字典append 到list 后值的改变问题
看一个例子 ? 1 2 3 4 d={'test':1} d_test=d d_test['test']=2 print d 如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变 ...
- BadUsb简单用法示例
所需硬件 badusb 自行淘宝 驱动程序会自动安装,若未自动安装自行百度 所需工具 arduino-1.5.5-r2用于编辑代码并上传至badusb badusb连接至电脑 打开ard ...
- sql盲注-笔记
盲注是因为数据库查询的结果不会直接显示在页面.只能通过构造查询语句查看反馈的结果真&假状态来判断信息. 实际注入手法和回显注入区别不大 下面只记录相关思路 select length ...
- effective_io_concurrency很重要的一个参数
effective_io_concurrency (integer) Sets the number of concurrent disk I/O operations that PostgreSQL ...