使用Python编写使用二进制字符串制作灯泡开关程序
假设我们的房间里有n个灯泡,这些灯泡从左到右编号为0到n-1。我们必须将它们排列成一行。最初,所有灯泡都处于关闭状态(0状态)。我们必须获得由给定目标数组’t’表示的配置,其中t [i]为’1’,如果第i个灯泡是开的并且为’0’则为关闭。我们还有一个开关可以翻转灯泡的状态。并且翻转操作定义如下−
- 选择任何灯泡索引i。
-
翻转从索引i到索引n -1的每个灯泡的状态。
我们必须找到形成目标所需的最小翻转次数。
因此,如果输入如t =“0101”,则输出将为3,如果我们从第二个灯泡开始,则下一个配置将为“0111”,然后从第三个开始,它将为“0100”,然后翻转最后一个灯泡使其成为“0101”
为了解决这个问题,我们将按照以下步骤进行−
- count:= 0
-
x:=’0′
-
对于t中的每个i,执行
- 如果i与x不同,则
- count:= count + 1
-
x:= i
- 如果i与x不同,则
-
返回count
让我们看以下实现以获得更好的理解−
例子
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