题解 | 牛牛的考试
牛牛的考试
https://www.nowcoder.com/practice/1a7a7c8d721547a29107cf02330ffe72
题干理解:难点在于如何理解严格小于,严格大于这两个词上,我的理解是:严格小于是指这个数要小于任何数,即最小值不只有一个,同理,严格大于也是指最大值只有1个。理解了这两点后题干透彻了:按照要求对于输入的n组数据进行比较,输出合适的选项。
解题思路:先找出输入的四个字符串a,b,c,d的最大最小值,并记录他们对应的选项,然后在找是否有和他们相同的值,如果有,那么就用J_Max或者J_Min记录下来,用于后续判定,最后按照要求输出即可.
#include <iostream>
#include<string>
using namespace std;
void Print(int n){
switch (n){
case 0:
cout<<"A"<<endl;
break;
case 1:
cout<<"B"<<endl;
break;
case 2:
cout<<"C"<<endl;
break;
case 3:
cout<<"D"<<endl;
break;
}
}
int main() {
int t;
cin>>t;
for(int i=0;i<t;i++){
string a,b,c,d;
cin>>a>>b>>c>>d;
int l[4];
l[0] = a.length();
l[1] = b.length();
l[2] = c.length();
l[3] = d.length();
int min=l[0],max=l[0];
int fmin=0,fmax=0;//记录最大最小的下标
for(int j=1;j<4;j++){
if(l[j]>max){
max=l[j];
fmax=j;
}else if(l[j]<min){
min = l[j];
fmin=j;
}
}
int J_Min=0,J_Max=0;
for(int j=0;j<4;j++){
if(l[j]==max && j!=fmax){
J_Max+=1;
}
if(l[j]==min && j!=fmin){
J_Min+=1;
}
}
if(J_Max!=0 && J_Min == 0){
Print(fmin);
}else if(J_Min!=0 && J_Max == 0){
Print(fmax);
}else{
cout<<"C"<<endl;
}
}
}
