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