夫妻相问题

题目本意:

在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相。所谓夫妻相,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。

本题则另辟蹊径,从人的姓名维度,以字母重复个数来寻找最具夫妻相的人。

题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。


规则1:如果字母重复数最多的女士有多位相同,则以最先匹配的女士做为最具夫妻相的人选。
规则2:人名中的相同字母,按重复一次处理。例如:li ling li lei 重复的字符个数为2,而不是4


代码:


char szname[10][26] = { "nan chi", "zhang san", "li si", "wang wu", "liu fu", "zhu yi" "ren cheng sa", "wu li feng", "zhang bo zhi", "zhao min" };

inline int findCnt(bool a[], bool b[])
{
	int cnt = 0;
	for (int i = 0; i < 26;i++)
	{
		if (a[i] && b[i])
			cnt++;
	}

	return cnt;
}

int _tmain()
{
	char name[26] = { 0 };
	gets(name);

	bool flag_girls[10][26] = { 0 };
	for (int i = 0; i < 10;i++)
	{
		for (int j = 0; szname[i][j] <= 'z'&&szname[i][j] >= 'a';j++)
		{
			flag_girls[i][j] = true;
		}
	}


	bool flag_boys[26] = { 0 };
	for (int i = 0; name[i] <= 'z'&&name[i] >= 'a';i++)
	{
		flag_boys[i] = true;
	}

	int cnt[10];
	int max = 0;
	for (int i = 0; i < 10;i++)
	{
		cnt[i] = findCnt(flag_girls[i], flag_boys);
		if (cnt[i]>max)
		{
			max = cnt[i];
		}
	}

	for (int i = 0; i < 10;i++)
	{
		if (max==cnt[i])
		{
			cout << "很相配的名字为:" << szname[i] << endl;
			break;
		}
	}

	system("pause");
	return 0;
}

输出结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值