蓝桥杯|【蓝桥杯】【python】扫地机器人-烂尾楼+1

问题描述 蓝桥杯|【蓝桥杯】【python】扫地机器人-烂尾楼+1
文章图片

算法思路 Q :**已清洁区域的边界。**以最左边作为基准,已经打扫好的区域数量,在最开始时候定义为 0。
T :**扫地机器人用时。**所以对于每个机器人来说,它的最大清洁范围就是左右两边的 (T / 2)的距离之内。
x : 机器人当前的坐标。
首先判断:
x - (T / 2) < Q
也就是说机器人的左清洁范围要在边界左边,不然就直接退出
然后判断下来对于某个机器人,共有如下几种情况:
1 机器人位置在边界右边,所以此时需要更新边界的范围,将边界更新到机器人打扫的右边界:
Q = x + (T / 2)
2 机器人位置在边界右边将边界更新到
Q = x + (T / 2)
【蓝桥杯|【蓝桥杯】【python】扫地机器人-烂尾楼+1】所以在两种情况下,机器人都是运行到那个位置
踩坑 时间的话,一增加就是两倍的关系,不如范围好控制,所以在后面把时间 T 改为 Scope这么一个范围的关系
源代码

def judge(Left_border, Scope):for i in range(Number_machine):if(position_machine[i] - Scope <= Left_border): if(position_machine[i] <= Left_border): Left_border = position_machine[i] + Scope - 1 else: Left_border = Scope + Left_border else: return(0)if(Left_border < Number_area): return(0) else: return(1)# main global Left_scope (Number_area, Number_machine) = map(int, input().split()) position_machine = [0 for _ in range(Number_machine)] for i in range(Number_machine): temp = int(input()) position_machine.append(temp) position_machine.sort()if((Number_area / Number_machine) >= position_machine[0]): Scope = int(Number_area / Number_machine) else: Scope = position_machine[0]for i in range(Scope, Number_area + 1): Left_border = 0 if(judge(Left_border, i) == 1): print(2 * (i - 1)) break

来火了 这是为什么呀,我到底问题出在哪里,真心烦躁

    推荐阅读