原题链接:蓝桥杯2013年第四届真题-高僧斗法
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
我发现了两个问题: 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