简单解决方案的输出不正确

时间:2013-12-15 11:11:00

标签: c++ string

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;
}

1 个答案:

答案 0 :(得分:4)

if声明后面有一个分号:

    if(a>(2*k));

这意味着,它总是复制“NO”并打破循环。删除它。