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
上一题
下一题