牛客练习赛 22 A

给6个火柴棍,问能不能拼成“熊”或者“象”

“熊”:4根棍子长度一样,另外2根棍子长度不一样

“象”:4根棍子长度一样,另外2根棍子长度一样。

如果可以拼出熊,输出“Bear”

如果可以拼出象,输出“Elephant”

如果都不可以拼出,输出“Hernia”

输入描述:

一行六个数表示每个火柴棍的长度

输出描述:

输出一行一个字符串表示答案

示例1

输入

复制

4 2 5 4 4 4

输出

复制

Bear

示例2

输入

复制

4 4 5 4 4 5

输出

复制

Elephant

示例3

输入

复制

1 2 3 4 5 6

输出

复制

Hernia

备注:

火柴棍长度在[1,9]内

题目链接:https://www.nowcoder.com/acm/contest/132/A

题解:注意6个长度一样的包括4个一样+2个一样。5个一样的+1个不一样包括4个一样+2个不一样的,set将同样的数字删除。

#include<iostream>
#include<cstdio>
#include<algorithm> 
#include<cstring>
#include<set>
using namespace std;

int a[6], b[10];
set<int> s;
int main()
{
    
    int x;
    for(int i = 0; i < 6; i++)
    {
        cin >> a[i] ;
        s.insert(a[i]);
    }
    if(s.size()==1)
        puts("Elephant");
    else if(s.size() == 2)
    {
        memset(b, 0, sizeof b);
        for(int i = 0; i < 6; i++)
            b[a[i]] ++;
        for(int i = 1; i < 10; i++)
        {
            if(b[i] == 4)
            {
                puts("Elephant");
                break;
            }    
            if(b[i]==5)
            {
                puts("Bear");
                break;
             }         
        }        
    }
    else if(s.size()==3)
    {
        for(int i = 0; i < 6; i++)
            b[a[i]] ++;
        for(int i = 1; i < 10; i++)
            if(b[i] == 4)    
                puts("Bear");
    }
    else 
        puts("Hernia");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38295645/article/details/81429333