POJ 1573 Robot Motion(模拟)
题目代号:POJ 1573
题目链接:http://poj.org/problem?id=1573
Default
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 14195 | Accepted: 6827 |
Description
A robot has been programmed to follow the instructions in its path. Instructions for the next direction the robot is to move are laid down in a grid. The possible instructions are
N north (up the page)
S south (down the page)
E east (to the right on the page)
W west (to the left on the page)
For example, suppose the robot starts on the north (top) side of Grid 1 and starts south (down). The path the robot follows is shown. The robot goes through 10 instructions in the grid before leaving the grid.
Compare what happens in Grid 2: the robot goes through 3 instructions only once, and then starts a loop through 8 instructions, and never exits.
You are to write a program that determines how long it takes a robot to get out of the grid or how the robot loops around.
Input
Output
Sample Input
3 6 5
NEESWE
WWWESS
SNWWWW
4 5 1
SESWE
EESNW
NWEEN
EWSEN
0 0 0
Sample Output
10 step(s) to exit
3 step(s) before a loop of 8 step(s)
Source
题目大意:WESN分别代表四个方向,第三个数据代表第一行的第几个位置开始,如果能走出去则输出走了几步,如果不能走出去进入了循环则输出第几步进入了循环,循环有几步。按题目标准格式输出。
解题思路:水题,作个标记代表第几步,如果下一步被标记过了则退出循环输出,如果走出去了也退出循环。
AC 代码:
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <iostream>
# include <fstream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <math.h>
# include <algorithm>
using namespace std;
# define pi acos(-1.0)
# define mem(a,b) memset(a,b,sizeof(a))
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
# define For(i,n,a) for(int i=n; i>=a; --i)
# define FO(i,a,n) for(int i=a; i<n; ++i)
# define Fo(i,n,a) for(int i=n; i>a ;--i)
typedef long long LL;
typedef unsigned long long ULL; char a[][];
int b[][]; int main()
{
//freopen("in.txt", "r", stdin);
int n,m,k;
while(cin>>n>>m,n&&m)
{
cin>>k;
mem(a,);
mem(b,);
for(int i=;i<=n;i++)
cin>>a[i]+;
int x=,y=k;
b[x][y]=;
int ans=;
int flag=;
while()
{
if(a[x][y]=='W')y--;
else if(a[x][y]=='S')x++;
else if(a[x][y]=='E')y++;
else if(a[x][y]=='N')x--;
if(x==||x==n+||y==||y==m+)
{
printf("%d step(s) to exit\n",ans);
break;
}
else if(b[x][y])
{
printf("%d step(s) before a loop of %d step(s)\n",b[x][y]-,ans-b[x][y]+);
break;
}
else
{
b[x][y]=++ans;
}
}
}
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【模拟题 写个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还是很 ...
随机推荐
- CM金丝雀Canary报错
参考: https://www.cnblogs.com/barneywill/p/10400788.html CM金丝雀Canary报错 1 HDFS 金丝雀Canary 测试无法为 /tmp/.cl ...
- pycharm中ctrl + C复制, ctrl+A全选等快捷键失效
原因是:在安装pycharm的时候也同时安装了vim插件,需要在settings - > vim Emulation里将相关的handler改成 IDE
- 刷机,twrp,安装xposed
首先明白几个名词: recovery模式,类似于pc端的PE系统,每个手机都有自带的rec,但不好用,最好自己刷一个,现在市面最好用的是twrp fastboot模式,比recovery更底层,进入f ...
- reload() 方法用于重新加载当前文档。配合Ajax异步请求。
1. reload() 方法, reload() 方法用于重新加载当前文档.配合Ajax异步请求. http://www.w3school.com.cn/jsref/met_loc_reload.as ...
- 记一次神奇的codeforces
今天有一场codeforces的div3,时间挺合适,于是就想打.结果发现rating超过1600就不能报名.虽然shzr好久不打CF了而且很菜,但是毕竟还是到了1600的,于是和ZUTTER_一起用 ...
- 【原创】Themida 2260 虚拟机 FISH 初探(一)
标 题: [原创]Themida 2260 虚拟机 FISH 初探(一)作 者: xiaohang时 间: 2016-03-03,00:39:37链 接: http://bbs.pediy.com/s ...
- 84. Largest Rectangle in Histogram (JAVA)
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- Java RMI 最简单实例
IHello.java import java.rmi.Remote; import java.rmi.RemoteException; public interface IHello extends ...
- oracle获取年、月、日
--获取年 select extract(year from date'2011-05-17') year from dual; --获取月 select extract(month from dat ...
- Ubuntu分区方案(菜鸟方案、常用方案和进阶方案)
菜鸟方案 “/”与swap两个分区就可以应付绝大多数的应用 常用方案 分为3个区 1. 挂载点/:主分区:安装系统和软件:大小为30G:分区格式为ext4: 2. 挂载点/home:逻辑分区:相当于“ ...