即使通过基本测试用例,该代码中也会出现错误。但仍然,它给出了错误的答案。

找不到失败的测试用例,最大问题的Codechef计数解决方案。我认为部分代码使它在某些测试用例中失败。

有人可以帮我找到此代码中的错误吗?

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int k;
    cin >> k;
    for (int j = 0; j < k; j++)
    {
        int n;
        cin >> n;
        int a[n];
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
        int maxCount = 0;
        int number;
        int index = 0;

        for (int i = 0; i < n; i++)
        {
            int count = 0;
            for (int l = 0; l < n; l++)
            {
                if (a[i] == a[l])
                {
                    count++;
                    if (count > maxCount)
                    {
                        maxCount = count;
                        index = i;
                    }
                    if (count == maxCount) {
                        (a[i] > a[index]) ? number = a[index] : number = a[i];
                    }
                }
            }
        }
        cout << number << " " << maxCount << endl;
    }
}

最佳答案

您的number变量是多余的。您需要跟踪数组中元素的index

也就是说,更改此行

 (a[i] > a[index]) ? number = a[index] : number = a[i];


(a[i] > a[index]) ? index = index : index = i;

并打印
std::cout << a[index] << " " << maxCount << std::endl;

关于c++ - 最大数量,通过测试用例但WA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53652096/

10-12 07:34