输入格式:
名字的字符串由不超过10个英文字母组成。在家谱中的第一行给出的名字前没有缩进空格。家谱中的其他名字至少缩进2个空格,即他们是家谱中最早祖先(第一行给出的名字)的后代,且如果家谱中一个名字前缩进kkk个空格,则下一行中名字至多缩进k+2k+2k+2个空格。
在一个家谱中同样的名字不会出现两次,且家谱中没有出现的名字不会出现在陈述语句中。每句陈述语句格式如下,其中X和Y为家谱中的不同名字:
X is a child of Y
X is the parent of Y
X is a sibling of Y
X is a descendant of Y
X is an ancestor of Y
输出格式:
对于测试用例中的每句陈述语句,在一行中输出True,如果陈述为真,或False,如果陈述为假。
输入样例:
6 5
John
Robert
Frank
Andrew
Nancy
David
Robert is a child of John
Robert is an ancestor of Andrew
Robert is a sibling of Nancy
Nancy is the parent of Frank
John is a descendant of Andrew
输出样例:
True
True
True
False
False
代码:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
struct node{
int level;
char name[15];
struct node* left; //儿子;
struct node* right; //兄弟;
};
int l;
node* gen=(node*)malloc(

该博客介绍了如何处理PTA上的4-5家谱问题,涉及家谱结构的建立以及通过输入样例和输出样例验证陈述语句的正确性。家谱中名字由不超过10个英文字母组成,且具有特定的缩进规则表示亲属关系。每个名字在家族中唯一,且陈述语句用于检验家谱关系的真实性。
最低0.47元/天 解锁文章
2923

被折叠的 条评论
为什么被折叠?



