2018年世界杯冰岛队因11平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个松son于是有网友科普如下:icelandJPG冰岛人沿用的是维京人古老的父系姓制孩子的姓等于父亲的名加后缀如果是儿子就加 sson女儿则加 sdottir。因为冰岛人口较少为避免近亲繁衍本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的功能。输入格式:输入首先在第一
该程序实现了一个用于查询冰岛人祖宗若干代有无联系的功能。程序中使用了一些数据结构和算法来实现这个功能。
- 数据结构:
- vector
f(N,-1): 用于存储每个人的父亲的编号。初始值为-1,表示没有父亲。 - vector
g[N]: 用于存储每个人的名字和姓氏。g[i]表示第i个人的名字和姓氏。 - bool sex[N]: 用于存储每个人的性别,true表示男性,false表示女性。
- map<string,int> m: 用于存储每个人的名字和对应的编号。m[name]表示名字为name的人的编号。
- 算法:
- 输入人数和每个人的信息。
- 对于每个人的信息,根据姓氏的后缀判断性别,并将名字和编号存入map中。如果姓氏不是以'r'或'n'结尾,则表示这个人是祖宗,不需要记录父亲的编号。
- 根据每个人的信息,将父亲的编号存入f中。
- 输入查询数量和每个查询的信息。
- 对于每个查询,判断两个人的性别是否相同。如果相同,则输出"Whatever"。如果不同,则判断两个人的祖宗是否有联系,即判断是否存在共同的祖先超过4代。如果有联系,则输出"Yes",否则输出"No"。
该程序没有涉及文件操作或数据库操作
原文地址: http://www.cveoy.top/t/topic/iRZR 著作权归作者所有。请勿转载和采集!