注意題目長度不能考慮字首,而且如果即存在一個選項的長度的兩倍小於其他所有選項的長度,也存在一個選項的長度大於其他選項長度的兩倍,則答案不是一個好的選擇,只能選擇C。
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; struct Answer{ char item; int length; Answer(char item_ = 'A', int length_ = 0):item(item_),length(length_){} bool operator<(const Answer& a) const{ return length < a.length; } }; int main(){ vector<Answer> ans; for(int i = 0 ; i < 4; ++ i){ string str; cin >> str; ans.push_back(Answer(str[0],str.length()-2)); } sort(ans.begin(),ans.end()); int index = 1; char correct = 'C'; for(index = 1;index < 4; ++ index){ if(ans[index].length < 2*ans[0].length) break; } if(index>=4) correct = ans[0].item; for(index = 0; index < 3; ++ index){ if(2*ans[index].length >ans[3].length) break; } if(index >= 3) { if(correct!='C') correct = 'C'; else correct = ans[3].item; } cout<<correct<<endl; }