假设我们在一个房间里有 n 个灯泡,这些灯泡的编号从 0 到 n-1。我们必须将它们从左到右排列成一排。最初,所有灯泡都关闭(0 状态)。我们必须得到由给定目标数组 't' 表示的配置,其中 t[i] 如果第 i 个灯泡打开,则为 '1',如果关闭,则为 '0'。我们还有一个开关来翻转灯泡的状态。翻转操作定义如下 -
选择任何灯泡指数 i。
将每个灯泡从索引 i 翻转到索引 n - 1。
我们必须找到形成目标所需的最少翻转次数。
所以,如果输入像t =“0101”,那么输出将是3,如果我们从第二个灯泡开始,那么下一个配置将是“0111”,然后从第三个开始,它将是“0100”,然后翻转最后灯泡使其成为“0101”
为了解决这个问题,我们将按照以下步骤操作 -
计数:= 0
x := '0'
对于每个 i 在 t,做
计数 := 计数 + 1
x := i
如果 i 与 x 不同,则
返回计数
让我们看看以下实现以获得更好的理解 -
def solve(t): count = 0 x = '0' for i in t: if i != x: count += 1 x = i return count t = "0101" print(solve(t))
"0101"输出结果
3