小y的考试
小y的考试
https://ac.nowcoder.com/acm/problem/212819
题目
坊间传说,三长一短选最短,三短一长选最长,参差不齐就选 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; }