算法学习之路|hdu 1035 Robot Motion(模拟)

  1. 云栖社区>
  2. 博客>
  3. 正文

算法学习之路|hdu 1035 Robot Motion(模拟)

kissjz 2018-02-22 15:19:33 浏览581
展开阅读全文

题目大意

给一个地图,由ESWN(东南西北)组成,机器人根据脚下的指令移动,求如果机器人能走出地图,走的步数多少,如果不能走出,求每绕一圈的步数和绕圈之前走的步数。

不是图的题目,直接做就行。

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
char map1[15][15];
int flag[15][15];
int main()
{
    int n,m,k;
    int x,y;
    while(scanf("%d%d",&n,&m)&&n)
    {
        int sum1=0,sum2=0;
        memset(flag,0,sizeof(flag));
        memset(map1,0,sizeof(map1));
        scanf("%d",&k);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++) { cin>>map1[i][j];
            }
        }
        x=1;
        y=k;
        while(x<=n&&x>=1&&y<=m&&y>=1)
        {
            if(map1[x][y]=='E')
                {
                    flag[x][y]++;
                    y++;
                    sum2++;
                }
           else if(map1[x][y]=='W')
                {
                    flag[x][y]++;
                    y--;
                    sum2++;
                }
           else if(map1[x][y]=='S')
                {
                    flag[x][y]++;
                    x++;
                    sum2++;
                }
           else if(map1[x][y]=='N')
                {
                    flag[x][y]++;
                    x--;
                    sum2++;
                }
            if(flag[x][y]==1)
                {
                    sum1++;
                }
           else if(flag[x][y]>1)
                break;
        }
        if(sum1>0)
            printf("%d step(s) before a loop of %d step(s)\n",sum2-sum1*2,sum1);
        else
            printf("%d step(s) to exit\n",sum2);
    }
    return 0;
}

 

 

网友评论

登录后评论
0/500
评论
kissjz
+ 关注