poj 1573 Robot Motion

来源:互联网 发布:mysql 5.6参考手册 编辑:程序博客网 时间:2024/05/29 14:10

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

There will be one or more grids for robots to navigate. The data for each is in the following form. On the first line are three integers separated by blanks: the number of rows in the grid, the number of columns in the grid, and the number of the column in which the robot enters from the north. The possible entry columns are numbered starting with one at the left. Then come the rows of the direction instructions. Each grid will have at least one and at most 10 rows and columns of instructions. The lines of instructions contain only the characters N, S, E, or W with no blanks. The end of input is indicated by a row containing 0 0 0.

Output

For each grid in the input there is one line of output. Either the robot follows a certain number of instructions and exits the grid on any one the four sides or else the robot follows the instructions on a certain number of locations once, and then the instructions on some number of locations repeatedly. The sample input below corresponds to the two grids above and illustrates the two forms of output. The word "step" is always immediately followed by "(s)" whether or not the number before it is 1.

Sample Input

3 6 5NEESWEWWWESSSNWWWW4 5 1SESWEEESNWNWEENEWSEN0 0 0

Sample Output

10 step(s) to exit3 step(s) before a loop of 8 step(s)

#include <iostream>#include <cstring>#include <cstdio>#include <queue>using namespace std;char str[110][110];int Map[110][110];int n,m,k;int px,py;int Step;int Dir[][2] = {{-1,0},{0,1},{1,0},{0,-1}};struct node{    int x,y;};int Driection(char ch){    switch(ch)    {    case 'N':        return 0;    case 'E':        return 1;    case 'S':        return 2;    case 'W':        return 3;    default :        return -1;    }}void Run(int x,int y){    memset(Map,0,sizeof(Map));    Step = 0;    queue<node>que;    node b,c;    b.x = x;    b.y = y;    que.push(b);    int st,ed;   int flag = false;    while(!que.empty())    {        Step++;        b = que.front();        que.pop();        Map[b.x][b.y]++;        if(b.x < 0 || b.x >= n || b.y < 0 || b.y >= m)        {            printf("%d step(s) to exit\n",Step-1);            return ;        }        if(Map[b.x][b.y] == 2 && !flag)        {            flag = true;            st = Step;        }        if(Map[b.x][b.y] == 3)        {            ed = Step - st;            printf("%d step(s) before a loop of %d step(s)\n",st-ed-1,ed);            return ;        }        int d = Driection(str[b.x][b.y]);        c.x = b.x + Dir[d][0];        c.y = b.y + Dir[d][1];        que.push(c);    }}int main(){    //freopen("in.txt","r",stdin);    while(cin>>n>>m>>k)    {        if(n == 0 && m == 0 && k == 0)            break;        for(int i=0; i<n; i++)        {            cin>>str[i];        }        Run(0,k-1);    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被淘宝骗了好评怎么办 美团好评被删了怎么办 卖家收到好评内容是差评怎么办 淘宝收货电话写错了怎么办 淘宝评价写错了怎么办 饿了么商家差评怎么办 淘宝不给补差价怎么办 淘宝顾客给差评怎么办 淘宝买家账号体检违规怎么办 买家淘宝账户体检中心违规怎么办 淘宝卖家电话骚扰该怎么办 手机欠费销户了怎么办 想下载好多个淘宝怎么办 送快递不记得路怎么办 淘宝物流弄丢了怎么办 邮政快递碰上难缠客户怎么办 举证工伤对方不签收怎么办 快递员收件的钱怎么办 锐捷网卡是空的怎么办 mac系统excel太慢怎么办 二手车交易发票丢了怎么办 转转上买二手电脑被骗了怎么办 如果电脑买贵了怎么办 电脑配置低玩lol卡怎么办 电视打开显示无信号怎么办 电脑卡怎么办换个驱动 刚开始开淘宝店没人买怎么办 公司有人带自己电脑办公怎么办 组装电脑连不上网怎么办 显卡玩不起吃鸡怎么办 u盘内存是假的怎么办 新买的电脑应该怎么办 海尔一体机电脑开不开机怎么办 苹果笔记本系统坏了怎么办 苹果笔记本电脑电池坏了怎么办 苹果笔记本电脑屏幕坏了怎么办 平板开关键坏了怎么办 平板电脑电池坏了怎么办 平板电脑充电口坏了怎么办 平板电脑系统坏了怎么办 平板电脑充电器坏了怎么办