点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

天威难测 2年前 回复TA
我发现了两个问题:
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