华为机试—姓名的夫妻相
题目:夫妻相
在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。
本题则另辟蹊径,从人的姓名维度,以字母重复个数来寻找最具“夫妻相”的人。
题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。
规则1:如果字母重复数最多的女士有多位相同,则以最先匹配的女士做为最具“夫妻相”的人选。
规则2:人名中的相同字母,按重复一次处理。例如:li ling 与li lei 重复的字符个数为2,而不是4。
预置女士名单(先后循序必须保证):
"wang fei",
"zhang man yu",
"zhang zhi yi",
"li li",
"li xiao man",
"li yu cun",
"yang ni",
"xiao tong",
"li lei",
"zhang san"
运行时间限制: 无限制
内存限制: 无限制
输入: 输入一个男士姓名,字符串
输出: 输出最具“夫妻相”的女士姓名
基本思路:
找到男士女士名字里出现的字母,比如说wang yun,出现的字母为a,g,n,y,u,w.然后匹配两个名字里出现的字母重复数,如果都出现了某个字母,重复数就加1.
#include <iostream>
#include <string>
using namespace std; //10个名字,26个字符
char nameArray[10][26]={"wang fei","zhang man yu","zhang zhi yi","li li",
"li xiao man","li yu cun","yang ni","xiao tong","li lei","zhang san"}; //找出a,b中字母重复的次数
int findCount(bool a[],bool b[])
{ int count=0; for(int i=0;i<26;i++) {if(a[i]&&b[i]) count++; }return count;
} int main()
{ char name[100]; gets(name); bool flag_0[10][26]; //每个女士名字中记录出现的字母,出现为1,不出现为0memset(flag_0,0,sizeof(flag_0)); int i,j; for(i=0;i<10;i++) { for(j=0;nameArray[i][j]!='\0';j++) { if(nameArray[i][j]<='z' && nameArray[i][j]>='a') { flag_0[i][nameArray[i][j]-'a']=1; } } } bool flag_1[26]; //每个男士名字中记录出现的字母,出现为1,不出现为0memset(flag_1,0,sizeof(flag_1)); for(i=0;name[i]!='\0';i++) { if(name[i]<='z' && name[i]>='a') { flag_1[name[i]-'a']=1; } } int count[10]; //记录每个女士名字中和输入的男士名字中的重复字母数int max =0;for(i=0;i<10;i++) { count[i]=findCount(flag_1,flag_0[i]); if(count[i]>max) max=count[i]; //输出匹配度最高的次数} for(i=0;i<10;i++) { if(count[i]==max) { cout<<nameArray[i]<<endl; //输出最先匹配的女士名字 break; } } return 0;
}
测试结果,可能不周全,欢迎查漏补缺:
华为机试—姓名的夫妻相相关推荐
- [华为机试真题]69.姓名的夫妻相
题目 在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是"夫妻相".所谓"夫妻相",就是两个人看上去比较般配,长相.身材等某些方面有一定的相似度. 本题则另辟蹊 ...
- Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题
接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题 HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...
- 华为机试—介绍、剖析、建议
一.华为机试介绍 1.大致介绍 时间:120分钟 环境:Visual Studio(去年是vs2005).Visual C++.VC 6.0.Eclipse(Java) 题量:共3题 初级题--60分 ...
- 华为机试在线训练--牛客网(python)第四部分
华为机试在线训练–牛客网(python) 第四部分(31~40) 第三十一题:[中级]单词倒排 题目描述 对字符串中的所有单词进行倒排. 说明: 1.每个单词是以26个大写或小写英文字母构成: 2.非 ...
- 集合篇10.华为机试(涮题记录2)
华为机试 31.成绩排序(**not) 32. 矩阵乘法 33. 24点游戏算法(not) 34.配置文件恢复 35. 查找两个字符串a.b中的最长公共子串 36.MP3光标位置(not) 37.DN ...
- [华为机试真题][2014]62.去除重复字符并排序
题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...
- 牛客网--华为机试在线训练10:字符个数统计
牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...
- 牛客网–华为机试在线训练9:提取不重复的数
牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...
- 牛客网–华为机试在线训练8:合并表记录
牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...
最新文章
- 2020考研 管理类联考综合能力-写作
- linux apache2.4 php,php5.6+apache2.4+linux如何搭建php环境
- 中国黑客自揭黑色产业链条:做病毒一定要低调
- 课堂上的社死现场...
- 在Linux平台上部署open***
- μCUnit,微控制器的单元测试框架
- aspnet网站开发实例_新手用户如何根据网站类型或应用场景选择云服务器?
- 使用代码删除Acquisition contract上指定IP的right scope
- linux减小根目录空间_Linux目录结构及文件基本操作详解
- GDB调试精粹及使用实例来源-转
- FR的控件CSS样式
- [转帖] 职场学习=贼学技术
- 互联网大病公益众筹项目文本分析
- c语言弹窗口的,弹窗代码 javascript如何编写一直弹窗口代码
- a+b / a-b / a*b / a/b c++问题题解
- 计算机中ram中文意思,ram是什么_ram是什么意思-太平洋IT百科
- 突破同一账号不能同时在不同电脑登录限制程序软件(多电脑端登录器多开软件)
- 伪原创文章如何写才算高质量
- 什么是数据挖掘?数据挖掘的目标是什么?
- Python3,11行代码解密摩斯电码,真実はいつもひとつ。