题目描述

如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A,B是C的(外)曾祖父,曾祖母,则A,B是C的great-grandparent,C是A,B的great-grandchild,之后再多一辈,则在关系上加一个great-。

输入描述:

    输入包含多组测试用例,每组用例首先包含2个整数n(0<=n<=26)和m(0<m<50), 分别表示有n个亲属关系和m个问题, 然后接下来是n行的形式如ABC的字符串,表示A的父母亲分别是B和C,如果A的父母亲信息不全,则用-代替,例如A-C,再然后是m行形式如FA的字符串,表示询问F和A的关系。

输出描述:

    如果询问的2个人是直系亲属,请按题目描述输出2者的关系,如果没有直系关系,请输出-。具体含义和输出格式参见样例.
链接:https://www.nowcoder.com/questionTerminal/2c958d09d29f46798696f15ae7c9703b
来源:牛客网#include <stdio.h>
#include <map>
#define N 26
using namespace std;struct Node{//二叉树节点int p1;//第一个双亲的下标,-1表示不存在int p2;//第二个双亲的下标,-1表示不存在
}tree[N];//顺序存储,下标就是它所代表的字符编号,比如0代表'A'int preOrder(int from, int to, int depth)
{//从from出发先序遍历到找到to为止,并返回to相对于from的深度if(from==to) return depth;if(tree[from].p1!=-1){int ret=preOrder(tree[from].p1, to, depth+1);if(ret!=-1) return ret;}if(tree[from].p2!=-1){int ret=preOrder(tree[from].p2, to, depth+1);if(ret!=-1) return ret;}return -1;
}int main()
{int n, m;while(scanf("%d %d", &n, &m)!=EOF){for(int i=0; i<N; i++){tree[i].p1=tree[i].p2=-1;}while(n--)//构建树
        {char str[4];scanf("%s", str);if(str[1]!='-') tree[str[0]-'A'].p1=str[1]-'A';if(str[2]!='-') tree[str[0]-'A'].p2=str[2]-'A';}while(m--)//查询
        {char str[3];scanf("%s", str);int from=str[0]-'A';int to=str[1]-'A';int ans1=preOrder(from, to, 0);if(ans1==1) printf("child\n");else if(ans1>=2){for(int i=ans1; i>2; i--) printf("great-");printf("grandchild\n");}else//看来不是晚辈,那就是长辈了
            {int ans2=preOrder(to, from, 0);if(ans2==1) printf("parent\n");else if(ans2>=2){for(int i=ans2; i>2; i--) printf("great-");printf("grandparent\n");}else printf("-\n");//也不是长辈,那就不是直系亲属
            }}}return 0;//大功告成
}

转载于:https://www.cnblogs.com/JAYPARK/p/10403349.html

牛客网——找出直系亲属相关推荐

  1. 找工作、备考、面试刷题网站推荐(牛客网、力扣、计蒜客、hihocoder、七月在线)以及acm竞赛oj

    不管是找工作笔试面试白板试进大厂,还是研究生参加初试复试,数据结构和算法都是都是重中之重,刷题就很必要,来拿走自己的offer 吧! 一.offer刷题推荐 1.牛客网 链接:牛客网 - 找工作神器| ...

  2. 牛客网大厂在线笔试输入输出练习python3版

    牛客网大厂在线笔试输入输出练习python3版 写在前面 1 解法一: 解法二:(错误解法) 2 解法一 解法二:错误解法 解法三 3 解法一 解法二 4 解法一 解法二 5 解法一 解法二 解法三 ...

  3. 牛客网 栈的压入、弹出序列

    链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 来源:牛客网 [编程题]栈的压入.弹出序列 ...

  4. 牛客网matlab怎么输入数据,从牛客上找的面经

    转自:牛客网 作者:雲水謡 链接:https://www.nowcoder.com/discuss/262804 来源:牛客网 OPPO-计算机视觉算法(sp) 一面: 大约40分钟吧,主要聊项目,问 ...

  5. 牛客网 水题 递推找规律

    链接: https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 小Y买了很多苹果,但他很贪吃,过了几天一下就吃剩一只了.每一天小Y会数出自己的苹果个数X,如果 ...

  6. 牛客网 F题 集训队脱单大法:这是一道只能由学姐我自己出数据的水题

    链接:https://ac.nowcoder.com/acm/contest/322/F 来源:牛客网 集训队脱单大法:这是一道只能由学姐我自己出数据的水题 时间限制:C/C++ 1秒,其他语言2秒 ...

  7. 牛客网在线编程----算法入门篇

    标题本篇博文主要是记录下自己的在线编程情况,初次练习,有的算法还待改进,大家有需要可以去牛客网上面多练练! 有需戳–>牛客网在线编程 NC65.题目描述 大家都知道斐波那契数列,现在要求输入一个 ...

  8. 牛客网数据开发题库_练习SQL利器,牛客网SQL实战题库

    牛客网SQL实战网址:https://www.nowcoder.com/ta/sql 持续更新--记录自己在牛客网SQL的做题过程 更新进度:61题,2019-4-3,更完了 1.查找最晚入职员工的所 ...

  9. 牛客网平台常州大学新生寒假训练会试

    A-添加逗号 链接:https://www.nowcoder.net/acm/contest/78/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其 ...

  10. 牛客网《BAT面试算法精品课》学习笔记

    目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...

最新文章

  1. .NET 框架兼容性简介
  2. Jin Ge Jin Qu hao UVA - 12563 (劲歌金曲)01背包,求装入的东西最多(相同多时价值大)
  3. vue-property-decorator 提供 OO 的风格 Vue Component 方便类型声明
  4. l2-008 最长对称子串 (25分)_小学数学关于时间认识(时、分、秒)的几点总结
  5. webstorm两个文件比对_webstorm怎么更改文件名称?或者是重命名
  6. 【实践】美团外卖广告智能算力的探索与实践
  7. hbase集群 数据写入_HBase神器 | BDSHBase集群之间数据迁移同步的利器
  8. C++基础::shared_ptr 编程细节(三)
  9. Laravel简⃣单⃣的⃣路⃣由⃣
  10. python 联机_CoderZh首款Python联机对战游戏 - NancyTetris1.0倾情发布(一)
  11. WINDOWS下SQL2016安装
  12. scratch 大家来找茬
  13. PHP读取txt文件自动分成指定行数
  14. 超清视频制作:视频补帧+超分辨率
  15. 鱼和熊掌兼得:C++代码在编译时完成白盒测试
  16. 阿里云的各种产品都是用来干什么的?
  17. python立体爱心_css绘制各种各样的形状图形
  18. (3)数仓建设-数据仓库设计方案
  19. 如何用PS制作一个小泡泡呢?
  20. 管理学二(学习与沟通的重要性)

热门文章

  1. 基于JSoup的网络爬虫爬取小说内容
  2. 微积分学习笔记(2)--修改更新中
  3. 在移动硬盘分区上装Win10系统,并在Mac上使用双系统
  4. SqlServer根据时段统计数据
  5. 商品的价格术语(外贸知识三)
  6. MSP430F149学习之IO端口
  7. WORD中的项目符号实例详解(多图)
  8. mutillidae(owasp10)数据库报错
  9. 通过Windows任务计划 ,定期恢复虚拟机快照
  10. 解决windows虚机系统时间与北京时间相差8小时