PTA 4-5 家谱处理(建树做法)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入格式:

名字的字符串由不超过10个英文字母组成。在家谱中的第一行给出的名字前没有缩进空格。家谱中的其他名字至少缩进2个空格,即他们是家谱中最早祖先(第一行给出的名字)的后代,且如果家谱中一个名字前缩进kkk个空格,则下一行中名字至多缩进k+2k+2k+2个空格。

在一个家谱中同样的名字不会出现两次,且家谱中没有出现的名字不会出现在陈述语句中。每句陈述语句格式如下,其中XY为家谱中的不同名字:

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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值