题解 | #MP3光标位置#
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
n = int(input())
s = input()
m1 = 1 #歌曲位置
m2 = 1 #光标位置
for i in range(len(s)):
if s[i] == 'U':
m1 -= 1
m2 -= 1
if m1 == 0 :
m1 = n
m2 = 4
elif m2 == 0:
m2 = 1
if s[i] == 'D':
m1 += 1
m2 += 1
if m1 == n+1:
m1 = 1
m2 = 1
elif m2 == 5 :
m2 = 4
arr = [0,0,0,0]
arr[m2-1] = m1-((m2-1)//4)*4
arr[(m2)%4] = m1+1-((m2)//4)*4
arr[(m2+1)%4] = m1+2-((m2+1)//4)*4
arr[(m2+2)%4] = m1+3-((m2+2)//4)*4
for item in arr:
if item > 0 :
print(item,end=' ')
print('')
print(m1)
不管有多少歌曲,其实只需记录光标位置和歌曲位置就好。
总结规矩:
1.光标位置只能1 2 3 4之间,到1之后再向上还是1,到4之后向下还是4。
2.歌曲位置只能1到n之间,到1之后向上变n,到n之后向下变1。同时出现这种情况时重置光标位置。
最后输出需要一些技巧,以光标位置为中心生成长度为4的数组,输出大于零的歌曲编号就好。
#华为机试#
查看11道真题和解析