ACM Robot Motion
S south (down the page)
E east (to the right on the page)
W west (to the left on the page)
例如,假设机器人从网格1的北面(顶部)开始,然后开始向南(下)。机器人的路径如图所示。在离开网格之前,机器人会在网格中执行10条指令。
比较一下网格2:机器人只经过3次指令,然后通过8条指令开始循环,从不退出。
您要编写一个程序,用于确定机器人离开网格所需的时间以及机器人环绕的周期。
Input
将有一个或多个网格用于漫游器导航。每个数据的格式如下。第一行是三个整数,以空格分隔:网格中的行数,网格中的列数以及机器人从北方进入的列数。可能的条目列从左侧开始编号。然后来排列方向说明。每个网格将具有至少一个,最多十行和多列指令。指令行仅包含没有空格的字符N,S,E或W。输入结束由含0 0 0的行表示。
Output
对于输入中的每个网格,都有一行输出。机器人遵循一定数量的指令,并在四方面的任何一个上退出网格,否则机器人会按照一定数量的位置上的指令进行一次,然后重复一些位置上的指令。下面的样本输入对应于上面的两个网格,并说明了两种形式的输出。 “step”一词紧随其后的是“(s)”,前面的数字是否为1。
Sample Input
3 6 5
NEESWE
WWWESS
SNWWWW
4 5 1
SESWE
EESNW
NWEEN
EWSEN
0 0
Sample Output
10 step(s) to exit
3 step(s) before a loop of 8 step(s)
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
char paths[][];
int step[][];
int r,c,start,row,col,exitstep,diestep,diex,diey;
bool die = false;
/*感想:实现递归的过程,一定要注意代码的整洁,不是指格式,而是逻辑思路,
就像数学的提取公因式一样,不要把同样的语句写太多遍,重复语句的执行会增加运行时间,
简单说,有可能因为的重复语句,不能实现AC目的*/
void solve(int row,int col,int num)
{
if(row < || col < || row >= r || col >= c) /*跳出网格*/
{
exitstep = num;
return;
}
if(step[row][col]) /*陷入循环*/
{
die = true;
diex = col;
diey = row;
diestep = step[row][col];
step[row][col] = num - step[row][col];
return;
}
//cout<<paths[row][col]<<endl;
step[row][col] = num;
if(paths[row][col] == 'N')
solve(row-,col,num+);
else if(paths[row][col] == 'S')
solve(row+,col,num+);
else if(paths[row][col] == 'E')
solve(row,col+,num+);
else if(paths[row][col] == 'W')
solve(row,col-,num+);
} int main()
{
while(cin>>r>>c,r||c)
{
cin>>start;
for(int i = ; i < r; i++)
scanf("%s",paths[i]);
memset(step,,sizeof(step));
die = false;
start = start -;
solve(,start,);
if(die) //3 step(s) before a loop of 8 step(s)
cout<< --diestep<<" step(s) before a loop of "<<step[diey][diex]<<" step(s)"<<endl;
else //10 step(s) to exit
cout<<--exitstep<<" step(s) to exit"<<endl;
}
return ;
}
ACM Robot Motion的更多相关文章
- [ACM] hdu 1035 Robot Motion (模拟或DFS)
Robot Motion Problem Description A robot has been programmed to follow the instructions in its path. ...
- HDU-1035 Robot Motion
http://acm.hdu.edu.cn/showproblem.php?pid=1035 Robot Motion Time Limit: 2000/1000 MS (Java/Others) ...
- poj1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12507 Accepted: 6070 Des ...
- Robot Motion(imitate)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11065 Accepted: 5378 Des ...
- 模拟 POJ 1573 Robot Motion
题目地址:http://poj.org/problem?id=1573 /* 题意:给定地图和起始位置,robot(上下左右)一步一步去走,问走出地图的步数 如果是死循环,输出走进死循环之前的步数和死 ...
- POJ 1573 Robot Motion(BFS)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12856 Accepted: 6240 Des ...
- Robot Motion 分类: POJ 2015-06-29 13:45 11人阅读 评论(0) 收藏
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11262 Accepted: 5482 Descrip ...
- POJ 1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12978 Accepted: 6290 Des ...
- Poj OpenJudge 百练 1573 Robot Motion
1.Link: http://poj.org/problem?id=1573 http://bailian.openjudge.cn/practice/1573/ 2.Content: Robot M ...
随机推荐
- 复习HTML+CSS(2)
n 项目符号嵌套编号思路 标签的内容(文本.项目符号.表格.图片等)必须放在最底层标记中. n 图片标记(行内元素,单边标记) l 语法:<img 属性 = "值"&g ...
- Oracle12c:创建主分区、子分区,实现自动分区插入效果
单表自动单个分区字段使用方式,请参考:<Oracle12c:自动分区表> 两个分区字段时,必须一个主分区字段和一个子分区字段构成(以下代码测试是在oracle12.1版本): create ...
- [原创软件]Maya报错窗口监测器
软件主要功能: 监测Maya软件运行状态,如弹出报错窗口,则自动点击关闭 程序界面截图: 开发环境及语言: c# .NET Framework 4.0 Visual Studio 2015 更新日志: ...
- Python进阶_mysql(1)
什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 进入mysql (linux ...
- ORACLE 行转列 案例解析
-- 创建 国家城市信息 临时表 WITH T_NATION_CITY_INFO AS( SELECT '北京' AS CITY,'中国' AS N ...
- [LeetCode] Best Time to Buy and Sell Stock with Transaction Fee 买股票的最佳时间含交易费
Your are given an array of integers prices, for which the i-th element is the price of a given stock ...
- 用AJAX实现上传图片或者文件的方法
大家好,我是小C,最近在项目中用到ajax上传图片文件,本篇我们就说说ajax上传文件. 我们平时用到的AJAX,大部分都是传几个参数就可以了.简单说就是传几个字符串. $.ajax({ url: u ...
- IOS开发---视频录制
今天研究了一下使用app录制视频的功能,感觉还是挺简单的.使用了AVFoundation框架,代码比较死,按步骤调用就行. 分享一下今天做的Demo的步骤 一,初始化输入设备,这里涉及到前,后摄像头: ...
- [LOJ 6248]「CodePlus 2017 11 月赛」晨跑
Description “无体育,不清华”.“每天锻炼一小时,健康工作五十年,幸福生活一辈子” 在清华,体育运动绝对是同学们生活中不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不 ...
- Codeforces Round #406 (Div. 1)
B题打错调了半天,C题想出来来不及打,还好没有挂题 AC:AB Rank:96 Rating:2125+66->2191 A.Berzerk 题目大意:有一个东东在长度为n的环上(环上点编号0~ ...