题解 | MP3光标位置

MP3光标位置

https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

import sys

# 读取输入:歌曲总数和操作序列
songs_num = int(input())  # 歌曲总数
orders = input()          # 操作序列(U:上移,D:下移)

# 初始化当前选中歌曲和相对位置
orgin_song = 1            # 当前选中的歌曲编号(初始为1)
assist_list = [int(x) for x in range(1, songs_num+1)]  # 歌曲列表[1,2,...,songs_num]
xiangdui_place = orgin_song  # 当前选中歌曲在可视窗口中的相对位置(1-4)

# 处理歌曲数≤4的特殊情况
if songs_num <= 4:
    if songs_num == 1:
        print('1')  # 只有1首歌
    elif songs_num == 2:
        print('1 2')  # 2首歌
    elif songs_num == 3:
        print('1 2 3')  # 3首歌
    else:
        print('1 2 3 4')  # 4首歌
else:
    # 处理每个操作指令
    for i in range(len(orders)):
        if orders[i] == 'U':  # 上移操作
            if orgin_song == 1:  # 特殊处理:从第一首歌上移
                orgin_song = songs_num  # 跳转到最后一首歌
                xiangdui_place = 4      # 相对位置设为4(窗口底部)
            else:
                orgin_song -= 1         # 正常上移
                xiangdui_place -= 1     # 相对位置上移
                if xiangdui_place == 0: # 防止越界
                    xiangdui_place = 1
        elif orders[i] == 'D':  # 下移操作
            if orgin_song == songs_num:  # 特殊处理:从最后一首歌下移
                orgin_song = 1           # 跳转到第一首歌
                xiangdui_place = 1       # 相对位置设为1(窗口顶部)
            else:
                orgin_song += 1          # 正常下移
                xiangdui_place += 1      # 相对位置下移
                if xiangdui_place == 5:  # 防止越界
                    xiangdui_place = 4

    # 根据最终相对位置,输出当前可视窗口中的4首歌
    if xiangdui_place == 1:  # 选中歌曲在窗口第1个位置
        print(' '.join(map(str, assist_list[orgin_song-1:orgin_song+3])))
    elif xiangdui_place == 2:  # 选中歌曲在窗口第2个位置
        print(' '.join(map(str, assist_list[orgin_song-2:orgin_song+2])))
    elif xiangdui_place == 3:  # 选中歌曲在窗口第3个位置
        print(' '.join(map(str, assist_list[orgin_song-3:orgin_song+1])))
    else:  # 选中歌曲在窗口第4个位置
        print(' '.join(map(str, assist_list[orgin_song-4:orgin_song])))

    # 输出最终选中的歌曲编号
    print(orgin_song)

全部评论
最后一行要改下,把最后一行的print放到最外层,我这样写只能过19/20,放出去才能全AC
点赞 回复 分享
发布于 07-04 00:02 广东

相关推荐

活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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