题目地址:http://ac.jobdu.com/problem.php?pid=1035
题目1035:找出直系亲属
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2388 解决:939
- 题目描述:
-
如果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的关系。
当n和m为0时结束输入。
- 输出:
-
如果询问的2个人是直系亲属,请按题目描述输出2者的关系,如果没有直系关系,请输出-。
具体含义和输出格式参见样例.
- 样例输入:
-
3 2 ABC CDE EFG FA BE 0 0
- 样例输出:
-
great-grandparent -
- 答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7759-1-1.html
- 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <cstdio> #include <vector> using namespace std; int do_find_relation_child( char a, char b, const vector< char > &vec, int cur){ if (a == '-' || b == '-' ){ return 0; } if (a == b){ return cur; } return do_find_relation_child(vec[a - 'A' ], b, vec, cur + 1); } void get_relation( char a, char b, const vector< char > &vec){ bool parent_flag = true ; int r = do_find_relation_child(a, b, vec, 0); if (r == 0){ r = do_find_relation_child(b, a, vec, 0); parent_flag = false ; } if (r == 0){ printf ( "-\n" ); } else { if (r > 2){ for ( int i = 3; i <= r; ++i){ printf ( "great-" ); } } if (r > 1){ printf ( "grand" ); } if (parent_flag){ printf ( "parent\n" ); } else { printf ( "child\n" ); } } } int main() { int n = 0, m = 0; while ( scanf ( "%d %d\n" , &n, &m) != EOF && m > 0 && n > 0){ vector< char > vec(26, '-' ); for ( int i = 0; i < n; ++i){ char a,b,c; scanf ( "%c %c %c\n" , &a, &b, &c); if (b != '-' ){ vec[b - 'A' ] = a; } if (c != '-' ){ vec[c - 'A' ] = a; } } for ( int i = 0; i < m; ++i){ char a, b; scanf ( "%c %c\n" , &a, &b); get_relation(a, b, vec); } } return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具