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

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