POJ-1573 Robot Motion模拟
题目链接:
https://vjudge.net/problem/POJ-1573
题目大意:
有一个N*M的区域,机器人从第一行的第几列进入,该区域全部由'N' , 'S' , 'W' , 'E' ,走到某个区域的时候只能按照该区域指定的方向进行下一步,问你机器人能否走出该片区域,若不能,输入开始绕圈的步数和圈的大小。
思路:
一开始一直WA,后来发现是因为vis数组的问题,这里设置的vis数组表示到该点走的步数,最开始是0步,这和初始化是0步是一样的,会导致如果再次走到这个点,就会判断成该点没有走过,后来初始化成-1,A了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
using namespace std;
typedef long long ll;
const int maxn = 1e2 + ;
const int INF = << ;
int dir[][] = {,,,,-,,,-};
int T, n, m, x;
map<char, int>M;
int Map[][];
int vis[][];
void dfs(int x, int y, int d)
{
//cout<<x<<" "<<y<<" "<<d<<endl;
if(x <= || x > n || y <= || y > m)
{
cout<<d<<" step(s) to exit"<<endl;
return;
}
if(vis[x][y] != -)
{
cout<<vis[x][y]<<" step(s) before a loop of "<<d - vis[x][y]<<" step(s)"<<endl;
return;
}
int cn = Map[x][y];
vis[x][y] = d;
dfs(x + dir[cn][], y + dir[cn][], d + );
}
int main()
{
M['S'] = ;
M['E'] = ;
M['N'] = ;
M['W'] = ; while(cin >> n >> m >> x)
{
if(!n && !m && !x)break;
memset(vis, -, sizeof(vis));
//这里不能设置成0,应该设置成-1,因为设置成0的话,第一步出发设置的也是0,这样就会把第一步标记成未走过的点了
memset(Map, , sizeof(Map));
char c;
for(int i = ; i <= n; i++)
{
for(int j = ;j <= m; j++)
{
cin >> c;
Map[i][j] = M[c];
}
}
dfs(, x, );
}
return ;
}
POJ-1573 Robot Motion模拟的更多相关文章
- POJ 1573 Robot Motion 模拟 难度:0
		#define ONLINE_JUDGE #include<cstdio> #include <cstring> #include <algorithm> usin ... 
- 模拟 POJ 1573 Robot Motion
		题目地址:http://poj.org/problem?id=1573 /* 题意:给定地图和起始位置,robot(上下左右)一步一步去走,问走出地图的步数 如果是死循环,输出走进死循环之前的步数和死 ... 
- POJ 1573 Robot Motion(模拟)
		题目代号:POJ 1573 题目链接:http://poj.org/problem?id=1573 Language: Default Robot Motion Time Limit: 1000MS ... 
- poj 1573 Robot Motion【模拟题 写个while循环一直到机器人跳出来】
		... 
- POJ 1573 Robot Motion(BFS)
		Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12856 Accepted: 6240 Des ... 
- POJ 1573 Robot Motion
		Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12978 Accepted: 6290 Des ... 
- poj 1573 Robot Motion_模拟
		又是被自己的方向搞混了 题意:走出去和遇到之前走过的就输出. #include <cstdlib> #include <iostream> #include<cstdio ... 
- Poj OpenJudge 百练 1573 Robot Motion
		1.Link: http://poj.org/problem?id=1573 http://bailian.openjudge.cn/practice/1573/ 2.Content: Robot M ... 
- [ACM] hdu 1035 Robot Motion (模拟或DFS)
		Robot Motion Problem Description A robot has been programmed to follow the instructions in its path. ... 
- PKU 1573 Robot Motion(简单模拟)
		原题大意:原题链接 给出一个矩阵(矩阵中的元素均为方向英文字母),和人的初始位置,问是否能根据这些英文字母走出矩阵.(因为有可能形成环而走不出去) 此题虽然属于水题,但是完全独立完成而且直接1A还是很 ... 
随机推荐
- 关于标准ui设计图转换为H5页面的终端适配
			一些基本概念 在进行具体实战之前,首先得了解下面这些基本概念(术语): 视窗 viewport 简单的理解,viewport是严格等于浏览器的窗口.在桌面浏览器中,viewport就是浏览器窗口的宽度 ... 
- 使用mescroll来实现移动端页面上拉刷新, 下拉加载更多功能
			* mescroll请参考官方文档 1. 使用mescroll实现下拉滑动的效果: (仅仅效果, 有的页面不需要刷新数据, 只要你能下拉就行) 代码如下: var mescroll = new MeS ... 
- Mycat 配置说明(schema.xml )
			Schema.xml 作为 MyCat中重要的配置文件之一,管理着 MyCat的逻辑库.表.分片规则.DataNode以 及DataSource.弄懂这些配置,是正确使用MyCat的前提. schem ... 
- TPYBoard v102 DIY照相机(视频和制作流程)
			前段时间的帖子,利用TPYBoard v102做的DIY照相机,周末实物终于做出来了,加了两个按键模块和一个5110,做的有点糙啊----望大家勿怪,哈哈哈.拍出来图片还算清晰,串口摄像头模块用的30 ... 
- Scala中 object 和 class的区别
			object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一 ... 
- docker部署PMA(LNMP架构)
			上篇文章中已经部署好php环境,测试也已经OK centos 7 docker 启动了一个web服务 但是启动时 报 WARNING: IPv4 forwarding is disabled. Net ... 
- 网络通信 --> IO多路复用之select、poll、epoll详解
			IO多路复用之select.poll.epoll详解 目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视 ... 
- 1. 初识 Lucene
			在学习Lucene之前呢,我们当然首先要了解下什么是Lucene. 0x01 什么是Lucene ? Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供. Lu ... 
- 配置COCO API(安装COCO)
			仍旧是win10,Python3.5 从GitHub下载coco源码,解压到任意文件夹.(或者创建一个工程)coco源码链接 https://github.com/cocodataset/cocoap ... 
- java 函数初始化作用
			本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对.但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子. 先摘一下书 ... 
