【问题标题】:Incorrect outputs for simple solution简单解决方案的错误输出
【发布时间】:2026-01-03 15:00:01
【问题描述】:

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

【问题讨论】:

    标签: c++ string


    【解决方案1】:

    if 语句后有一个分号:

        if(a>(2*k));
    

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

    【讨论】:

      最近更新 更多