给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]内

注意两种特殊情况就好:

1.全都相等的时候,是Elephant

2. 5个相同1个不同时 , 是Bear

然后代码:

#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#include <map>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int t , ans = 0;
int flag = 0 , flag1 = 0 , flag2 =0,flag3 = 0 ;
int book[50];
memset(book , 0 , sizeof(book));
for(int i = 0 ; i < 6 ; i++)
{
	scanf("%d" , &t);
	book[t]++;
}
for(int i =0 ;i < 10;i++)
{
	if(book[i] != 0)
	{
	//	printf("book[%d] = %d\n" , i,book[i]);
		ans++;
		if(book[i] == 6)
		{
			flag2 = 1;
		}
		if(book[i] == 5)
		{
			flag3 = 1;
		 } 
		if(book[i] == 4)
		{
		//	printf("===");
			flag = 1;
		//	ans++;
		}
		if(book[i] == 2)
		{
			flag1 = 1;
		//	printf("----");
		//	ans++;
		}
		if(ans == 6)
		{
			break;
		}
	}
}
//printf("flag = %d  flag1 = %d\n" , flag , flag1);
if(flag == 1 && flag1 == 1||flag2 == 1)
{
	printf("Elephant\n");
}
 else if(flag == 1 && flag1 == 0|| flag3 == 1)
{
	printf("Bear\n");
}
else
{
	printf("Hernia\n");
}
	return 0;
}