题解 | #MP3光标位置#
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
设置一个当前位置,和一个当前窗口,窗口里面只显示4个位置,当前位置在窗口内。up当前位置,如果超出窗口上边界,向上更新窗口。down当前位置,如果超出窗口下边界,向下更新窗口。
当前位置为5,窗口内容为【5,6,7,8】,操作up, 当前位置是4,窗口内容是【4,5,6,7】,而不是【1,2,3,4】尽管这更贴近真实情况。
当前位置为5,窗口内容为【5,6,7,8】,操作up, 当前位置是4,窗口内容是【4,5,6,7】,而不是【1,2,3,4】尽管这更贴近真实情况。
def winup(): global window if window[0] == 0: window[0] = n-4 window[1] = n-1 else: window[0] -= 1 window[1] -= 1 def windown(): global window if n-1 - window[1] > 0: window[0] += 1 window[1] += 1 else: window =[0,3] while True: try: n = int(input()) op = input() start = 0 #初始位置 window = [0,3] #初始窗口,位置从0起符合习惯,到后面+1即为题目要求的位置 flag = 0 if n <=3 else 1 #页数小于4,就不更新窗口 for ch in op: if ch == 'U': start -= 1 if flag == 1 and start < window[0]: winup() #向上更新窗口 if start < 0: start = n-1 else: start += 1 if flag == 1 and start > window[1]: windown() #向下更新窗口 if start > n-1: start = 0 if flag == 0: window[1] = n-1 res = [i for i in range(window[0],window[1]+1)] print(' '.join([str(i+1) for i in res])) print(start+1) except: break