A.The Child and Homework(C++)(最详细的解体讲述,(个人认为))

A.The Child and Homework(C++)(最详细的解体讲述,(个人认为))

题目:A.The Child and Homework(英文版)

中文版翻译:

从前,一个孩子得到了一个由多种选择题组成的测试作为家庭作业。多选题由四个选项组成:A、B、C和D。 每个选项都有描述,孩子应该找出唯一正确的选择。

幸运的是,孩子知道如何解决如此复杂的测试。孩子将遵循算法:

  • 如果有一些选择,其描述至少比所有其他描述短两倍,或至少两次比所有其他描述长,那么孩子认为选择是伟大的。
  • 如果正好有一个伟大的选择,那么孩子选择它。否则孩子选择C(孩子认为这是最幸运的选择)。

你得到了一个多选题,你能预测孩子的选择吗?

输入

第一行以"A"开头(无引号),然后按照选项A的描述。接下来的三行包含相同格式的其他选择的描述。它们按顺序排列:B、C、D。 请注意,描述后缀为"X",因此前缀不得计入描述的长度。

每个描述都是非空的,最多由100个字符组成。每个字符可以是大写英语字母或小写英语字母,或"_"。

输出

打印一行与孩子的选择:"A","B","C"或"D"(无报价)


代码:

//#include<iostream>
#include<bits/stdc++.h>
//#include<string>
//#include<algorithm>

using namespace std;
int main(){
    string A,B,C,D;
    cin>>A>>B>>C>>D;
    int a,b,c,d;
    a=A.size()-2;
    b=B.size()-2;
    c=C.size()-2;
    d=D.size()-2;
    int Array[4]={a,b,c,d};
    sort(Array,Array+5);
    if(2*Array[0]<=Array[1]&&Array[3]>=2*Array[2])
    cout<<"C";
    else if(2*Array[0]<=Array[1]){
        if(Array[0]==a)
        cout<<"A"; 
        if(Array[0]==b)
        cout<<"B"; 
        if(Array[0]==c)
        cout<<"C"; 
        if(Array[0]==d)
        cout<<"D"; 
    }
    else if(Array[3]>=2*Array[2]){
        if(Array[3]==a)
        cout<<"A"; 
        if(Array[3]==b)
        cout<<"B"; 
        if(Array[3]==c)
        cout<<"C"; 
        if(Array[3]==d)
        cout<<"D";
    }
    else{
        cout<<"C";
    }
    return 0;
}

解析:根据题目要求,可以将选项分为两种情况,最优选项若是其中一个选项比其他三个选项描述的都长且该选项是其他选项长度的两倍,或者是比其他三个选项都短且是其他选项的二分之一,那么答案就选该选项,否则就选C,其中,注意一种情况就是前边两个条件同时满足,注意此时的选项也是选C。

根据题意我们需要先将四个选项的字符长度求出来,然后在进行排序,***.size()是求字符串长度的函数(头文件是#include<string>)因为求出来的字符串的长度是选项+.+选项内容,所以求出来的字符串长度需要-2,然后将求出来的字符串长度的数值,赋值给长度为4含数组(选项个数已经确定为4),再用sort函数进行排序(头文件为#include<algorithm>),若无其他要求函数是按从小到大进行排序,然后再用if--else语句进行判断,先将其中红色标记的特殊情况进行判断,然后再进行其他情况的判断,具体代码如上所示,(#include<bits/stdc++.h>为总的头文件,其他的头文件可以不写🤭)可能其中有些地方太过繁长,但大体意思跟步骤就差不多是这样,🤭嘻嘻。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值