每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。
接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。
3 LRR
E
n = int(input()) path = input().strip() m = {"N": {"L": "W", "R": "E"}, "S": {"L": "E", "R": "W"}, "W": {"L": "S", "R": "N"}, "E": {"L": "N", "R": "S"}} direction = "N" for c in path: direction = m[direction][c] print(direction)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n= in.nextInt(); String dir = in.next(); int result = 0; char[] chars = dir.toCharArray(); for (char c: chars){ if (c == 'L') result += 1; else if (c == 'R') result += 3; } switch (result % 4){ case 0: System.out.println("N");break; case 1: System.out.println("W");break; case 2: System.out.println("S");break; case 3: System.out.println("E");break; } } }
import sys num_a = input() str_a = sys.stdin.readline().strip() dir_lr = ['N','E','S','W'] dir_ll = ['N','W','S','E'] num_l = str_a.count('L') num_r = str_a.count('R') if num_l <= num_r: res_r = num_r - num_l print(dir_lr[res_r % 4]) else: res_l = num_l - num_r print(dir_ll[res_l % 4])
主要是找规律,一对L和R可以抵消一次方向变化
找出字符串中L和R的个数关系,然后换算出方向
注意算个数关系时记得对4取余(%4)
#include <iostream> (720)#include <algorithm> using namespace std; int main() { int num, numL, numR; int answer; // 保存L和R的个数关系,再换算出方向 string s; cin >> num; cin >> s; numL = count(s.begin(), s.end(),'L'); // 计算字符串中L的个数 numR = count(s.begin(), s.end(),'R'); if(numL > numR){ answer = (numL -numR)%4; switch(answer){ case 1:cout<<'W'<<endl;break; case 2:cout<<'S'<<endl;break; case 3:cout<<'E'<<endl;break; case 0:cout<<'N'<<endl;break; } } else{ answer = (numR - numL)%4; switch(answer){ case 1:cout<<'E';break; case 2:cout<<'S';break; case 3:cout<<'W';break; case 0:cout<<'N';break; } } return 0; }
```
#include<iostream> (720)#include<cstring> #include<string> (765)#include<algorithm> using namespace std; int main(){ int N; cin>>N; char s[N]; for(int i=0;i<N;i++) cin>>s[i]; char cur = 'N'; for(int i=0;i<N;i++){ if((cur=='E' && s[i]=='L') || (cur=='W' && s[i]=='R')) cur = 'N'; else if((cur=='E' && s[i]=='R') || (cur=='W' && s[i]=='L')) cur = 'S'; else if((cur=='N' && s[i]=='R') || (cur=='S' && s[i]=='L')) cur = 'E'; else if((cur=='N' && s[i]=='L') || (cur=='S' && s[i]=='R')) cur = 'W'; } cout<<cur<<endl; }