问题描述

在这里插入图片描述

算法思路

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

来火了

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐