首页 > 试题广场 >

迷路的牛牛

[编程题]迷路的牛牛
  • 热度指数:172 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。

输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。
接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。


输出描述:
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。
示例1

输入

3
LRR

输出

E
直接模拟,写出在4种朝向的情况下,向左或向右转向后的朝向
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String strN = br.readLine();
        String rotateSeq = br.readLine();
        char curStatus = 'N';
        for(int i = 0; i < rotateSeq.length(); i++)
            curStatus = rotate(curStatus, rotateSeq.charAt(i));
        System.out.println(curStatus);
    }
    
    /**
      转向方法,输出当前朝向curstatus下向direction转向后的朝向
    */
    private static char rotate(char curStatus, char direction) {
        if(curStatus == 'N'){
            if(direction == 'L')
                return 'W';
            else
                return 'E';
        }else if(curStatus == 'S'){
            if(direction == 'L')
                return 'E';
            else
                return 'W';
        }else if(curStatus == 'E'){
            if(direction == 'L')
                return 'N';
            else
                return 'S';
        }else{
            if(direction == 'L')
                return 'S';
            else
                return 'N';
        }
    }
}


发表于 2020-11-25 11:55:01 回复(0)
num = int(input())
string = input()
l_sum = string.count('L')
r_sum = num - l_sum
res = (r_sum - l_sum)%4
dict = {0:'N',1:'E',2:'S',3:'W'}
print(dict[res])

发表于 2019-10-14 17:50:15 回复(0)
import java.util.*;
import java.lang.*;
 
public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    String str = sc.next();
    //分割字符串,统计转的次数
    char[] arr = str.toCharArray();
    int L = 0,R = 0;
    for(int i=0; i<arr.length; i++){
      if(arr[i] == 'L') L++;
      else R++;
    }
    L %= 4;
    R -= L;
    R %= 4;
    char result = 'N';
    //开始向左转
    switch(L){
      case 0: break;
      case 1: result='W';break;
      case 2: result='S';break;
      case 3: result='E';break;
    }
    //开始向右转
    switch(R){
      case 0: break;
      case 1: result='E';break;
      case 2: result='S';break;
      case 3: result='W';break;
    }
    System.out.println(result);
  }
}

发表于 2019-08-02 21:51:25 回复(0)