题解 | 牛牛的考试

牛牛的考试

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;
        }



    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务