谷歌亚太2017年A轮 - 不正确

Google APAC 2017 Round A - incorrect

本文关键字:不正确 2017年 谷歌      更新时间:2023-10-16

我想知道是否有人可以提供一些帮助来查看下面的代码?我尝试了Google APAC 2017 A轮,但被第一个问题困住了,其链接 https://code.google.com/codejam/contest/11274486/dashboard。

事实上,我有一些输出,它们似乎都是正确的,而在线法官没有这么说。如果有人愿意浏览代码并进行一些讨论,我们将不胜感激。谢谢!

string A()
{
    int N;
    cin >> N;
    cin.get();
    string leader, cur;
    int i = 0, j = 0, L = 0, leaderLetterNum = 0;
    set<char> letters;
    for(i = 0; i < N; i++)
    {
        getline(cin, cur);
        L = cur.empty() ? 0 : cur.length();
        for(j = 0; j < L; ++j)
        {
            if(cur[j] >= 'A' && cur[j] <= 'Z') letters.insert(cur[j]);
        }
        if(leader.empty() || letters.size() > leaderLetterNum)
        {
            leader.clear();
            leader = cur;
            leaderLetterNum = letters.size();
        }
        cur.clear();
        letters.clear();
    }
    return leader;
}
void multiTest()
{
    int T;
    cin >> T;
    int caseCount = 0;
    while(caseCount++ < T)
    {
        cout << "Case #" << caseCount << ": " << A() << endl;
    }
    return;
}
int main(void)
{
    multiTest();
    return 0;
}

您错过了条件

如果出现平局,则按字母顺序排列名字最早的人是领导者。

尝试使用

if(leader.empty() || letters.size() > leaderLetterNum ||
(letters.size() == leaderLetterNum && cur < leader))

而不是

if(leader.empty() || letters.size() > leaderLetterNum)