题解 | #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
查看6道真题和解析