【蓝桥杯】【python】扫地机器人-烂尾楼+1
问题描述算法思路Q :**已清洁区域的边界。**以最左边作为基准,已经打扫好的区域数量,在最开始时候定义为 0。T :**扫地机器人用时。**所以对于每个机器人来说,它的最大清洁范围就是左右两边的 (T / 2)的距离之内。x : 机器人当前的坐标。首先判断:x - (T / 2) < Q也就是说机器人的左清洁范围要在边界左边,不然就直接退出然后判断下来对于某个机器人,共有如下几种情况:1
·
问题描述

算法思路
Q :**已清洁区域的边界。**以最左边作为基准,已经打扫好的区域数量,在最开始时候定义为 0。
T :**扫地机器人用时。**所以对于每个机器人来说,它的最大清洁范围就是左右两边的 (T / 2)的距离之内。
x : 机器人当前的坐标。
首先判断:
x - (T / 2) < Q
也就是说机器人的左清洁范围要在边界左边,不然就直接退出
然后判断下来对于某个机器人,共有如下几种情况:
1 机器人位置在边界右边,所以此时需要更新边界的范围,将边界更新到机器人打扫的右边界:
Q = x + (T / 2)
2 机器人位置在边界右边将边界更新到
Q = x + (T / 2)
所以在两种情况下,机器人都是运行到那个位置
踩坑
时间的话,一增加就是两倍的关系,不如范围好控制,所以在后面把时间 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
来火了
这是为什么呀,我到底问题出在哪里,真心烦躁
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)