Codeforces问题373A - http://codeforces.com/problemset/problem/373/A
我没有使用多个if语句来计算每个数字的元素数量,而是在排序数组后尝试检查给定的条件。我得到第一个测试用例的错误输出(在问题的链接中给出)。我的方法有问题吗?我的解决方案应该改变什么。
我的解决方案:
#include<iostream>
#include<cstring>
using namespace std;
int k,i,j,a;
char panel[17],temp,output[4];
int main()
{
cin>>k;
for(i=0;i<16;i++)
cin>>panel[i];
for(i=0;i<16;i++) //Bubble sort.
{
for(j=0;j<(15-i);j++)
{
if(panel[j]>panel[j+1])
{
temp=panel[j+1];
panel[j+1]=panel[j];
panel[j]=temp;
}
}
}
a=1;
strcpy(output,"YES");
for(i=0;i<16;i++)
{
if(panel[i]==panel[i+1])
++a;
else
a=1;
if(a>(2*k));
{
strcpy(output,"NO");
break;
}
}
cout<<output;
}
答案 0 :(得分:4)
if
声明后面有一个分号:
if(a>(2*k));
这意味着,它总是复制“NO”并打破循环。删除它。