想了好久 为什么不行 这道c语言题

zjqcsh 2014-09-10 10:32:20
十七、切换状态

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;
}
...全文
140 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊熊大叔 2014-09-10
  • 打赏
  • 举报
回复
两个错: 1) if(a[0]==1)这个判断多余,而且可能引入错误,应该删掉. 2) u=pow(2,n)-sum; 改成 u=n-sum;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧