题目描述
一排有N盏灯。事先给定每盏灯的初始状态(开着或关着),你的任务是计算出至少要切换多少盏灯的状态(把开着的关掉,或把关着的打开),使得这N盏灯交替地打开和关闭。
输入
输入文件中有多组测试数据,每行一组。首先是一个整数N(1<=N<=10000)表示灯的个数。然后是N个整数,表示这N盏灯的状态(1表示打开,0表示关闭)。测试数据直到文件尾。
输出
对每组测试数据输出一个至少需要切换的灯的数目,占一行。
样例输入 复制
9 1 0 0 1 1 1 0 1 0
3 1 0 1
样例输出 复制
3
0
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[10001];int count1 = 0;int count2 = 0;
int b[10001];int c[10001];
for(int i = 0;i<n;i++)
scanf("%d",&a[i]);
for(int i = 0;i<n;i++)
{
if(i%2==0)
b[i]=1;
else
b[i]=0;
}
for(int i = 0;i<n;i++)
{
if(i%2==0)
c[i]=0;
else
c[i]=1;
}
for(int i = 0;i<n;i++)
{
if(a[i]!=b[i])
count1++;
}
for(int i = 0;i<n;i++)
{
if(a[i]!=c[i])
count2++;
}
int sum = count1<count2?count1:count2;
cout<<sum<<endl;
}
return 0;
}