测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A20354. 智能家居系统在智能家居系统中,我们可以通过中央控制系统来管理各个房间的智能灯。为了简化问题,假设每个房间有一个智能灯,其状态用1表示开,0表示关。我们的任务是计算家里所有开着的灯的数量。我们将采用分治算法的思想来解决这个问题。请补全以下代码,使用分治算法实现统计列表中开着的灯(值为1)数量的功能。def count_lights_on(rooms): # 如果列表为空,直接返回0 if not …

填空题 困难

题目描述

智能家居系统

在智能家居系统中,我们可以通过中央控制系统来管理各个房间的智能灯。为了简化问题,假设每个房间有一个智能灯,其状态用1表示开,0表示关。我们的任务是计算家里所有开着的灯的数量。我们将采用分治算法的思想来解决这个问题。

请补全以下代码,使用分治算法实现统计列表中开着的灯(值为1)数量的功能。

def count_lights_on(rooms):
    # 如果列表为空,直接返回0
    if not rooms:
        return 0

    # 如果列表只有一个元素,直接判断是否为开着的灯
    if len(rooms) == 1:
        return rooms[0]

    # 将列表分为两部分
    mid = ①
    left_rooms = rooms[:mid]
    right_rooms = rooms[mid:]

    # 使用分治递归统计每部分开着的灯的数量
    count_left = ②
    count_right = count_lights_on(right_rooms)

    # 返回总开着的灯的数量
    return ③

# 示例测试
rooms = [1, 0, 1, 0, 1, 0, 1]  # 1代表灯开着,0代表灯关着
print(count_lights_on(rooms))  # 输出应为4

参考答案

def count_lights_on(rooms): # 如果列表为空,直接返回0 if not rooms: return 0 # 如果列表只有一个元素,直接判断是否为开着的灯 if len(rooms) == 1: return rooms[0] # 将列表分为两部分 mid = len(rooms) // 2 left_rooms = rooms[:mid] right_rooms = rooms[mid:] # 使用分治递归统计每部分开着的灯的数量 count_left = count_lights_on(left_rooms) count_right = count_lights_on(right_rooms) # 返回总开着的灯的数量 return count_left + count_right # 示例测试 rooms = [1, 0, 1, 0, 1, 0, 1] # 1代表灯开着,0代表灯关着 print(count_lights_on(rooms)) # 输出应为4
上一题 下一题