题目

坊间传说,三长一短选最短,三短一长选最长,参差不齐就选 C。

给出 T 个选择题,根据上面的坊间传说选出答案。

注意,优先判断是否满足 “三长一短”,再判断是否满足 “三短一长”。
当且仅当最短选项唯一时满足 “三长一短”;同理,当且仅当最长选项唯一时满足 “三短一长”。其余情况都算作 “参差不齐”。

解题思路

记录四个选项中最短和最长的选项。

如果最短选项唯一,返回此选项。
否则,如果最长选项唯一,返回此选项。
否则,返回 C。

C++代码

#include<iostream>
#include<vector>
using namespace std;

int main(){
    string select = "ABCD";
    int T;
    cin >> T;
    string s[4];
    while(T--){
        cin >> s[0] >> s[1] >> s[2] >> s[3];
        int len[4] = {0};
        vector<int> mi, ma;
        for(int i=0; i<4; ++i){
            len[i] = s[i].size();
            if(mi.empty()){
                mi.push_back(i);
            }
            else if(len[i] < len[mi[0]]){
                mi.clear();
                mi.push_back(i);
            }
            else if(len[i] == len[mi[0]]){
                mi.push_back(i);
            }

            if(ma.empty()){
                ma.push_back(i);
            }
            else if(len[i] > len[ma[0]]){
                ma.clear();
                ma.push_back(i);
            }
            else if(len[i] == len[ma[0]]){
                ma.push_back(i);
            }
        }

        if(mi.size()==1)
            cout << select[mi[0]] << endl;
        else if(ma.size()==1)
            cout << select[ma[0]] << endl;
        else
            cout << "C" << endl;
    }
    return 0;
}