想了好久 为什么不行 这道c语言题
十七、切换状态
Time Limit:1000MS Memory Limit:65536K
Total Submit:110 Accepted:56
Description
有N盏灯,排成一排。给定每盏灯的初始状态(开或关),你的任务是计算至少要切换多少盏灯的状态(将开着的灯关掉,或将关掉的灯开起来),才能使得这N盏灯开和关交替出现。
Input
输入数据占一行。首先是一个整数N,1 ≤ N ≤ 10000,然后是N个整数,表示这N盏灯的初始状态,1表示开着的,0表示关着的。灯与灯之间用空格分隔。
Output
输出占一行,表示至少需要切换状态的灯的数目。
Sample Input
3 1 0 1
9 1 0 0 1 1 1 0 1 0
Sample Output
0
3
Hint
以上输入输出样例中有两组的测试数据
Source
下面是我做的 哪里错了 第二组数据测出来是是6
#include<stdio.h>
#include<math.h>
int main()
{
int n,a[10000],i,u,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(a[0]==1)
{for(i=2;i<=n;i=i+2)
{
if(a[i]==0)
sum++;}
for(i=1;i<=n;i=i+2)
{
if(a[i]==1)
sum++;}
}
u=pow(2,n)-sum;
if(sum<u)
printf("%d\n",sum);
else
printf("%d\n",u);
return 0;
}