while True: try: SongNum=int(input()) Order=input() head,tail,index=1,SongNum,1 if SongNum<=4:#当歌曲数目小于等于4时,可以直接输出当前列表 for i in Order: if i=='U':#对于每一步的命令‘U’(‘D’),有两种情况: if index==1:#第一种:光标在第一首歌曲上, index=SongNum#执行一次‘U’,光标移到最后一首歌曲上; else:#第二种:光标不在第一首歌曲上, index-=1#执行一次‘U’,光标移到上一首歌曲上; else: if index==SongNum:#第一种:光标在最后一首歌曲上, index=1#执行一次‘D’,光标移到第一首歌曲上; else:#第二种:光标不在最后一首歌曲上, index+=1#执行一次‘D’,光标移到下一首歌曲上。 head,tail=1,SongNum#重新设置头、尾坐标用于歌曲数目大于4的情形 else: for i in Order: if i=='U': if index==1:#此时,执行一次‘U’, index=SongNum#光标移到最后一首歌; head,tail=SongNum-3,SongNum#更新列表尾为最后一首歌,表头为倒数第四首歌 else: index-=1#此时,执行一次‘U’,光标上移一首; if index<head:#注意,若上移后的坐标比当前表头坐标小,则要更新表头和表尾, head,tail=index,index+3#更新列表头坐标为光标所在那首歌,列表尾为表头往后3首歌 else: if index==SongNum:#此时,执行一次‘D’, index=1#光标移到第一首歌; head,tail=1,4#更新列表头尾第一首歌,表尾为第四首歌 else: index+=1#此时,执行一次‘D’,光标下移一首; if index>tail:#注意,若下移后的坐标比当前表尾坐标大,则要更新表头和表尾, head,tail=index-3,index#更新列表尾坐标为光标所在那首歌,列表头为表尾往前3首歌 print(' '.join([str(i) for i in range(head,tail+1)])) print(index) except: break