A21391. 昆虫变换问题问题描述有 n 只昆虫排成一排,每只昆虫为萤火虫(用 0 表示)或蜜蜂(用 1 表示)。魔术师每次操作可以将一只萤火虫变为蜜蜂,或将一只蜜蜂变为萤火虫。目标是让所有相邻昆虫的种类都不相同,求最少需要的操作次数。
填空题
较易
知识点
题目描述
昆虫变换问题
问题描述
有 n 只昆虫排成一排,每只昆虫为萤火虫(用 0 表示)或蜜蜂(用 1 表示)。魔术师每次操作可以将一只萤火虫变为蜜蜂,或将一只蜜蜂变为萤火虫。目标是让所有相邻昆虫的种类都不相同,求最少需要的操作次数。
输入格式
第一行:一个整数 n(2 ≤ n ≤ 1000),表示昆虫数量。
第二行:n 个整数(0 或 1),表示初始排列,数字间用空格隔开。
输出格式
一个整数,表示最少需要的操作次数。
样例输入
6
0 1 1 0 0 1样例输出
2解释
将第 2 只变为 0,第 4 只变为 1,即可满足相邻昆虫不同。此时排列变为 0 0 1 1 0 1,但这似乎仍有相邻相同的情况。正确的修改应该是将第 3 只变为 0,第 4 只变为 1,得到 0 1 0 1 0 1,这样所有相邻昆虫都不同,操作次数为 2。
参考答案
n=int(input())
dataList=list(map(int, input().split()))
i=0 #变更次数
changeTime=0
while i<len(dataList)-1:
#比较左边和右边是不一样
if dataList[i]==dataList[i+1]:
#一样则变更一次
changeTime+=1
#变更右边
dataList[i]=1-dataList[i]
else:
#不一样,则将下标往右移动
i+=1
print(changeTime)
上一题
下一题