我发现了两个问题:
1.在回溯的过程:如果小和尚有两种走法都可以达到期望,那这种break后的回溯过程其实会导致省略后一种走法
2.应该是大于等于后一个位置坐标
所以我觉得代码应该这样
# main
# 输入数据,并将位置信息转换成间隔信息,也即是Nim转换
pos = input().split()
heap = [0 for _ in range(len(pos) - 1)]
for i in range(len(pos)):
pos[i] = int(pos[i])
# Nim转换
for i in range(len(pos) - 1):
heap[i] = pos[i + 1] - pos[i] - 1
# 进行异或计算
temp_sum = 0
for i in range(0, len(pos) - 1, 2):
temp_sum ^= heap[i]
# 进行判断
if sum == 0:
print(-1)
else:
temp_j = 1000
for i in range(len(pos) - 1):
for j in range(1, temp_j):
if(pos[i] +j >= pos[i + 1]):
break