[未解决] 1558: [蓝桥杯][算法提高VIP]色盲的民主

存在一个测试用例不通过,正确率只有91%;

 

https://www.dotcpp.com/oj/problem1558.html

 

#include
#include
#include
#include 
#include<string>
#include
#include
#include
using namespace std;

struct color {
    int cnt = 0;
    string col;
};

vectorvec;

bool cmp(color a, color b) {
    if (a.cnt != b.cnt)
        return a.cnt > b.cnt;
    else
        return strcmp(a.col.c_str(),b.col.c_str())<0;
}

bool charge(string s) {
    for (int i = 0; i < vec.size(); i++) {
        if (vec[i].col == s) {
            vec[i].cnt++;
            return true;
        }
    }
    return false;
}

int main(){
    int n;
    cin >> n;
    getchar();
    string s;
    if (n == 0)
        return 0;
    for (int i = 0; i < n; i++) {
        getline(cin, s);
        if (!charge(s)) {
            color c;
            c.col = s;
            c.cnt ++;
            vec.push_back(c);
        }
        //cout << s << endl;
    }
    sort(vec.begin(), vec.end(), cmp);
    cout << vec[0].col<<endl;
    for (int i = 1; i < vec.size(); i++) {
        if (vec[i].cnt == vec[0].cnt)
            cout << vec[i].col << endl;
    }
    return 0;
}

 

 

[后续更新]:问题出在了getline读入上,貌似是OJ系统的锅,之前按行读入从来没出过这个问题,待定一下;

你可能感兴趣的:([未解决] 1558: [蓝桥杯][算法提高VIP]色盲的民主)