题目:夫妻相

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

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

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

规则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;
}

测试结果,可能不周全,欢迎查漏补缺:


华为机试—姓名的夫妻相相关推荐

  1. [华为机试真题]69.姓名的夫妻相

    题目 在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是"夫妻相".所谓"夫妻相",就是两个人看上去比较般配,长相.身材等某些方面有一定的相似度. 本题则另辟蹊 ...

  2. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  3. 华为机试—介绍、剖析、建议

    一.华为机试介绍 1.大致介绍 时间:120分钟 环境:Visual Studio(去年是vs2005).Visual C++.VC 6.0.Eclipse(Java) 题量:共3题 初级题--60分 ...

  4. 华为机试在线训练--牛客网(python)第四部分

    华为机试在线训练–牛客网(python) 第四部分(31~40) 第三十一题:[中级]单词倒排 题目描述 对字符串中的所有单词进行倒排. 说明: 1.每个单词是以26个大写或小写英文字母构成: 2.非 ...

  5. 集合篇10.华为机试(涮题记录2)

    华为机试 31.成绩排序(**not) 32. 矩阵乘法 33. 24点游戏算法(not) 34.配置文件恢复 35. 查找两个字符串a.b中的最长公共子串 36.MP3光标位置(not) 37.DN ...

  6. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

  7. 牛客网--华为机试在线训练10:字符个数统计

    牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...

  8. 牛客网–华为机试在线训练9:提取不重复的数

    牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...

  9. 牛客网–华为机试在线训练8:合并表记录

    牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...

最新文章

  1. 2020考研 管理类联考综合能力-写作
  2. linux apache2.4 php,php5.6+apache2.4+linux如何搭建php环境
  3. 中国黑客自揭黑色产业链条:做病毒一定要低调
  4. 课堂上的社死现场...
  5. 在Linux平台上部署open***
  6. μCUnit,微控制器的单元测试框架
  7. aspnet网站开发实例_新手用户如何根据网站类型或应用场景选择云服务器?
  8. 使用代码删除Acquisition contract上指定IP的right scope
  9. linux减小根目录空间_Linux目录结构及文件基本操作详解
  10. GDB调试精粹及使用实例来源-转
  11. FR的控件CSS样式
  12. [转帖] 职场学习=贼学技术
  13. 互联网大病公益众筹项目文本分析
  14. c语言弹窗口的,弹窗代码 javascript如何编写一直弹窗口代码
  15. a+b / a-b / a*b / a/b c++问题题解
  16. 计算机中ram中文意思,ram是什么_ram是什么意思-太平洋IT百科
  17. 突破同一账号不能同时在不同电脑登录限制程序软件(多电脑端登录器多开软件)
  18. 伪原创文章如何写才算高质量
  19. 什么是数据挖掘?数据挖掘的目标是什么?
  20. Python3,11行代码解密摩斯电码,真実はいつもひとつ。

热门文章

  1. 红月之特装数据(转自官方)
  2. Skype交互过程分析
  3. kde 配置桌面_在KDE桌面中为GTK应用程序配置鼠标光标样式
  4. deepin、UOS 安装wine
  5. 棋牌行业开年第一站,阿里游戏云与你聊安全
  6. mysql数据库中的自增字段会不会溢出,我用的是int,万一超过这个int的表示范围会怎样
  7. Google加强辨识有害程序 运用深度学习找出隐藏关联
  8. 一文读懂区块链隐私技术系列之环签名
  9. 软件测评师--第18小时 白盒测试
  10. winForm 编程 视频教学