题解 | #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的数组,输出大于零的歌曲编号就好。
#华为机试#
全部评论

相关推荐

二十岁的编程男神王大...:读博吧兄弟,你这绩点太好了,何必转码,另外哈哈哈真见到有括号标出来985的,这个不标注也知道吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务