问题描述
文章图片
算法思路 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
来火了 这是为什么呀,我到底问题出在哪里,真心烦躁
推荐阅读
- 蓝桥杯|蓝桥杯——机器人行走
- 自然语言处理|NLP实用阅读英文文献技巧分享
- python|数据增强操作(旋转、翻转、裁剪、色彩变化、高斯噪声等)
- OCR|使用挤压、哈哈镜、扭曲进行文字图像增强
- 深度学习|使用tensorboard时踩的坑
- 深度学习|opencv基本操作
- 深度学习|yolov3详解
- 卷积|YOLO论文系列笔记(中)
- python|Python爬虫之无法获取网页源码的解决方案详解