首页 > 试题广场 >

迷路的牛牛

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

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


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

输入

3
LRR

输出

E
python3:
N = eval(input())
string = input()
direction = 'NESW'
key = 0
for i in string:
    if i == 'R':
        key += 1
    else:
        key -= 1
if key >=0:
    print(direction[key%4])
else:
    print(direction[-(-key%4)])


发表于 2020-09-20 18:32:21 回复(0)
n=int(input())
turn=input()
last=0
direction=['N','E','S','W']
for i in turn:
    if i=='L':
        last=last-1
    else:
        last=last+1
last=last%4
if last<0:
    last=last+4
print(direction[last])


发表于 2020-05-04 16:54:36 回复(0)
import sys
n = int(sys.stdin.readline().strip())
s = sys.stdin.readline().strip()
res = 0
for i in range(n):
    if s[i] == "L":
        res -= 1
    else:
        res += 1
res %= 4
direction = ['N','E','S','W']
print(direction[res])

发表于 2020-03-25 11:03:21 回复(0)
from collections import Counter
m = ['N','E','S','W']
input()
n = Counter(input())
print(m[(n['R'] - n['L']) % 4])

发表于 2020-03-15 11:00:16 回复(0)
有人跟我一样吗,先把当前方向和转向的组合罗列到字典里,然后通过查询字典来判断方向。
def main():
    dict = {'EL': 'N','ER': 'S', 'SL': 'E', 'SR': 'W', 'WL': 'S', 'WR': 'N', 'NL': 'W', 'NR': 'E'}
    N = int(input())
    S = input()
    toward = 'N'
    for s in S:
        cur = toward + s
        toward = dict[cur]
    print(toward)
if __name__ == '__main__':
    main()


发表于 2020-02-07 22:18:17 回复(0)
左转(L)-1
右转 (R)+1 
那总和取余4为下标(同方向连转四下为一周)
n=int(input())
f=['N','E','S','W']
l=0
s=input()
for i in s:
    if i=="L":
        l-=1
    else:
        l+=1
print(f[(l)%4])
发表于 2019-10-07 17:24:59 回复(0)
## python中list可以用负数索引,因此只需对4取余数即可
pos_vec = ['N','W','S','E']
while True:
    try:
        num = int(input())
        D = input()
        pos = 0 # North is pos_vec[0]
        for d in D:
            if d=='L':
                pos+=1
            else: pos+=-1
        print(pos_vec[pos%4])
    except:
        break

发表于 2019-09-18 18:16:30 回复(0)
fang=0
n=int(input())
shu=input()
for a in shu:
    if a=="L":
        fang+=1
    if a=="R":
        fang-=1
res=fang%4
if res==0:
    print("N")
if res==1:
    print("W")
if res==2:
    print("S")
if res==3:
    print("E")
发表于 2019-09-13 20:47:21 回复(0)
n = int(input())
dir = input()
s = ['N','E','S','W']
s1 = ['N','W','S','E']
if n>0:
    L=0
    R=0
    for i in dir:
        if i == "L":
            L += 1
        else:
            R += 1
    if R - L >= 0:
        print(s[(R-L)%4])
    else:
        print(s1[(L-R)%4])
else:
    print('N')
发表于 2019-09-11 20:19:52 回复(0)
n = int(input())
turn = input()
toward = ['W', 'N', 'E', 'S']
num = 1 for i in turn:  if i == 'L':
        num -= 1    else:
        num += 1  if num > 3:
    num = num % 4  elif num < -4:
    num = -(-num % 4)  print(toward[num])

发表于 2019-09-03 15:19:27 回复(0)
这题并不难,不断在四个方向游走,感觉python更简单一点
if __name__ == "__main__":
    orientation = ['W','N','E','S']  #定义四个方向
    num = int(input())
    direction = input()
    j = 1
    for i in range(len(direction)):
        if(direction[i]=='L'):
            j = j-1
            if(j==-1):             #方向边界及时调整
                j=3
        else:
            j = j+1
            if(j==4):              #方向边界调整
                j=0
    print(orientation[j])


编辑于 2019-08-07 22:52:10 回复(0)
## 向右转则+1,向左转-1,最后的数%4=0为N,%4=1为E,%4=2为S,%4=3为W

import sys
n=int(sys.stdin.readline().strip())
rotate=sys.stdin.readline().strip()
direction=['N','E','S','W']
index=rotate.count('R')-rotate.count('L')
print(direction[index%4])

发表于 2019-08-06 09:38:26 回复(0)
规定顺时针方向为正方向
try:
    while True:
        N = int(input())
        s = input()
        
        res = 0
        s = list(s)
        for char in s:
            if char == 'L':
                res -= 1
            else:
                res += 1
                
        if res < 0:
            res = -(abs(res) % 4)
        else:
            res = res % 4
        
        if res == 0:
            print('N')
        elif res == 3 or res == -1:
            print('W')
        elif res == 2 or res == -2:
            print('S')
        else:
            print('E')
except:
    pass

发表于 2019-08-05 14:52:06 回复(0)
import sys
lines = sys.stdin.readlines()
direction = []
for  line in lines:
    direction.append(line)
d = direction[1] 
d0 = "NESW"
num = d.count("R") - d.count("L")
n = num%4
forward = d0[n]
print(forward)


发表于 2019-08-03 22:44:45 回复(0)

Python 

    cnt = int(input())
    strings = input()
    L = strings.count('L')
    R = strings.count('R')
    cal = R - L
    cal = cal % 4
    dir = ['N', 'E', 'S', 'W']
    print(dir[cal])
发表于 2019-08-03 18:01:57 回复(0)
dic = {'N':{'L':'W','R':'E'},
       'W':{'L':'S','R':'N'},
        'S':{'L':'E','R':'W'},
        'E':{'L':'N','R':'S'}}
while True:
    try:
        n = int(input())
        string = input()
        location = 'N'
        for i in range(n):
            location = dic[location][string[i]]
        print(location)
    except:
        break
发表于 2019-07-21 22:42:30 回复(0)
def pos(face_position, return_position):
    if face_position == 'N' and return_position == 'L':
        return 'W'
    elif face_position == 'N' and return_position == 'R':
        return 'E'
    elif face_position == 'S' and return_position == 'L':
        return 'E'
    elif face_position == 'S' and return_position == 'R':
        return 'W'
    elif face_position == 'W' and return_position == 'L':
        return 'S'
    elif face_position == 'W' and return_position == 'R':
        return 'N'
    elif face_position == 'E' and return_position == 'L':
        return 'N'
    elif face_position == 'E' and return_position == 'R':
        return 'S'

n = int(input().strip())
way = [i for i in input().strip()]
direction0 = 'N'
a = pos(direction0, way[0])

for i in range(1, len(way)):
    a = pos(a, way[i])

print(a)

case通过率100%,不是最聪明的解法,但是是最直观的解法

首先定义函数pos(face_position, return_position)

face_position代表当***向,return_position代表当前的转向

初始方向为direction0 = 'N'

第一步a = pos(direction0, way[0])

第二步a = pos(a, way[1])

一直到最后一步a = pos(a, way[n])

当前步的朝向受上一步朝向和转向的影响

发表于 2019-07-15 14:23:02 回复(0)
"""
左转减1,右转加1
结果 mod 4,打印方位
"""
import sys

if __name__ == "__main__":
    # sys.stdin = open('input.txt', 'r')
    n = int(input().strip())
    s = input().strip()
    ans = 0
    for i in range(len(s)):
        if s[i] == 'L':
            ans -= 1
        else:
            ans += 1
    point = ['N', 'E', 'S', 'W']
    print(point[ans % 4])
编辑于 2019-07-02 11:06:09 回复(0)
n=int(input())
temp=input()
now=0
position=['N','E','S','W']
for i in range(n):
    if(temp[i]=='L'):
        now-=1
    else:
        now+=1
print(position[now%4])
发表于 2019-06-27 10:21:54 回复(0)
length = int(input())
direction = input()
state = ['N'] * (length + 1)
for l in range(length):
    if state[l] == 'N':
        state[l + 1] = 'W' if direction[l] == 'L' else 'E'
    elif state[l] == 'S':
        state[l + 1] = 'E' if direction[l] == 'L' else 'W'
    elif state[l] == 'W':
        state[l + 1] = 'S' if direction[l] == 'L' else 'N'
    else:
        state[l + 1] = 'N' if direction[l] == 'L' else 'S'
print(state[-1])
发表于 2019-06-22 19:02:21 回复(0)