POJ 1573 Robot Motion

题意

描述

有个机器人按照程序走路,看能不能走出去。

输入

第一行a b w
分别表示行数列数初始的进入位置(列),行永远是第一行。
之后a行每行b个字母表示在每个格子里走的方向。

题解

思路

没什么好说的,简单的模拟题,照着写就行了。

代码

#include <stdio.h>
#include <memory>

int main(){
  int a,b,l;
  char map[14][14];
  int find[14][14];
  while(1){
    scanf("%d%d%d",&a,&b,&l);
    getchar();
    if(a == 0 && b == 0 && l == 0)
      break;
    memset(find,0,sizeof(find));
    char tmp;
    for( int i = 0 ; i < a ; i++){
      for ( int j = 0 ; j < b ; j++ ){
        scanf("%c",&tmp);
        map[i][j] = tmp;
      }
      getchar();
    }
    int step = 1;
    int nx = 0 , ny = l-1;
    find[nx][ny] = step;
    while(1){
      tmp = map[nx][ny];
      //printf("step = %d , x = %d , y = %d , w = %c ,",step,nx,ny,tmp);
      switch(tmp){
        case 'N':
          {
            nx--;
            break;
          }
        case 'E':
          {
            ny++;
            break;
          }
        case 'S':
          {
            nx++;
            break;
          }
        case 'W':
          {
            ny--;
            break;
          }
      }
      //printf("nx = %d , ny = %d \n",nx,ny);
      if( nx >= a || nx < 0 || ny >= b || ny < 0 ){
        printf("%d step(s) to exit\n",step);
        break;
      }
      if( find[nx][ny] != 0 ){
        printf("%d step(s) before a loop of %d step(s)\n",find[nx][ny] - 1 , step + 1 - find[nx][ny]);
        break;
      }
      step++;
      find[nx][ny] = step;
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值