[PAT甲级]1004. Counting Leaves (30)(求树各层非叶子节点数目)

sqlite中fts的数据结构说明:segment Interior nodes 这个block(或者说node) 阅读详情

1004. Counting Leaves (30)

原题链接

A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.

Input
Each input file contains one test case. Each case starts with a line containing 0 < N < 100, the number of nodes in a tree, and M (< N), the number of non-leaf nodes. Then M lines follow, each in the format:

ID K ID[1] ID[2] … ID[K]
where ID is a two-digit number representing a given non-leaf node, K is the number of its children, followed by a sequence of two-digit ID’s of its children. For the sake of simplicity, let us fix the root ID to be 01.

Output
For each test case, you are supposed to count those family members who have no child for every seniority level starting from the root. The numbers must be printed in a line, separated by a space, and there must be no extra space at the end of each line.

The sample case represents a tree with only 2 nodes, where 01 is the root and 02 is its only child. Hence on the root 01 level, there is 0 leaf node; and on the next level, there is 1 leaf node. Then we should output “0 1” in a line.

Sample Input

2 1
01 1 02

Sample Output

0 1

题目大意:

  • 输入第一行给出树的结点个数n和非叶子结点m
  • 接下来输入m行 每行给出非叶子结点id, 结点id的孩子个数k, k个孩子结点的id
  • 最后输出每一层叶子结点的个数
  • 如果题目给的例子不明显的话,我再举个例子

输入

 9 5
01 2 02 03
02 1 04
03 2 05 06
05 2 07 08
08 1 09

输出

0 0 2 1 1

举例的树

      01  
    /     \
   02     03
  /      /  \
 04     05  06
       /  \
     07   08
          / 
        09

思路:

  • 我用的深度优先遍历递归算法
  • 定义二维数组arr 存储各个结点的孩子
  • 定义数组res 存储各层叶子结点数目 从0开始计数
  • 定义maxDepth为最大深度 从1开始计数
  • 从根节点开始遍历,直到遇到叶子结点,将当前层res[depth]++ ,更新最大深度maxDepth,最后输出

代码:

#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<vector<int>>& arr, int (&res)[100], int &maxDepth, int index, int depth){
    if(arr[index].size() == 0){
        res[depth]++;
        maxDepth = maxDepth>depth ? maxDepth : depth;
        return;
    }
    for(int i=0; i<arr[index].size(); i++)
        dfs(arr, res, maxDepth, arr[index][i], depth+1);
}
int main()
{
    vector<vector<int>> arr(100);//存储各个结点的孩子
    int res[100] = {0};//存储各层叶子结点数目
    int maxDepth = 0;//最大深度 从1开始计数
    int n, m;
    cin >> n >> m;
    for(int i=0; i<m; i++){
        int id,k;
        cin >> id >> k;
        for(int j=1; j<=k; j++){
            int temp;
            cin >> temp;
            arr[id].push_back(temp);
        }
    }
    dfs(arr, res, maxDepth, 1, 0);// 1表示根节点id, 0表示当前层是第0层
    cout << res[0];
    for(int i=1; i<=maxDepth; i++)
        cout << " " << res[i];
    return 0;
}
【PAT甲级】1004 Counting Leaves (30 分) JS 最近疫情在家办公,足不出户,做做PAT的题。奉上【PAT甲级】JS解题分析————第三篇。(1003Emergency暂时还不会,先跳过,哈哈) 阅读详情

相关推荐

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

1004 Counting Leaves (30 分)

1004 Counting Leaves (30 分) A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one t...

92377 421

CTF命令执行绕过实战:从空格过滤到无回显外带的7种核心姿势

命令执行漏洞是Web安全中的常见高危漏洞,其核心原理在于应用程序未对用户输入进行充分过滤,导致攻击者能够注入并执行系统命令。在真实环境中,安全防护措施(如WAF、输入过滤函数)普遍存在,因此漏洞利用的关键技术在于“绕过”这些过滤机制。理解过滤器的运作逻辑(如黑名单、白名单、转义、长度限制)是成功绕过的前提。通过系统学习**空格绕过**、**命令黑名单绕过**、**编码混淆**等基础技巧,并结合**无回显外带**、**反弹Shell**等高级利用链,安全研究人员能够有效应对复杂防护场景。本文以CTFshow

weixin_29315091的博客 370

PAT-ADVANCED1094——The Largest Generation

我的PAT-ADVANCED代码仓:https://github.com/617076674/PAT-ADVANCED 原题链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048 题目描述: 题目翻译: 1094 人数最多的一代 族层次结构通常由谱系树呈现,其中同一级别上的所有节...

清风阁 342

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1107

拆解人形机器人:核心硬件与驱动系统

本文深入解析人形机器人的核心硬件系统,将其类比为"骨骼+肌肉+神经"的集成体。重点介绍了三大关键组件:驱动单元(无框力矩电机和空心杯电机)、传动单元(谐波减速器和行星滚柱丝杠)以及感知单元(力矩传感器、编码器和IMU)。文章指出一体化关节模组正成为行业趋势,能够实现更紧凑的结构和更高的可靠性。同时分析了硬件价值量分布,强调丝杠、电机等部件是当前技术高地和成本重心。最后指出随着技术进步,机器人价值将更多向"大脑"和"神经"转移。

小明的博客 1530

【LeetCode】658. Find K Closest Elements 解题报告(Python)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/find-k-closest-elements/description/ 题目描述: Given a sorted array, two integers k and x, find the k clos...

负雪明烛 4732

解决win11无法安装.net framework 3.5(包括.net2.0和3.0)错误代码:0x80070005

解决win11无法安装.net framework 3.5(包括.net2.0和3.0)错误代码:0x80070005

zeng699304的博客 2万+

1004. Counting Leaves (30)

A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Each input file contains one test case. Each case starts with

puppet_pyt的博客 229

PCB设计必看:铜皮厚度与载流能力对照表(附Excel计算工具)

本文深入解析了PCB设计中铜皮厚度与载流能力的核心关系,提供了基于IPC-2152标准的动态计算逻辑与实用Excel工具。文章不仅分享了载流对照表,更重点剖析了影响载流能力的关键因素(如铜厚、线宽、温升、布线层),并给出了高电流设计的实战技巧与测试验证方法,帮助工程师规避常见陷阱,实现从理论到实践的闭环设计。

weixin_29228781的博客 725

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为

KJ.JK 716

PAT甲级 1004 Counting Leaves

PAT甲级 1004 Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one te...

旺崽的博客 2850

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号-并联端接

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑并且进行并联端接,以下图为例,准备好发送接收端的IBIS模型, (se_example.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(W1_welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 375

PAT练习题(甲级) 1004 Counting Leaves (30分)(Java实现)

PAT练习题 1004 Counting Leaves(Java)题目题意解题思路代码实现 题目 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each inpu...

CoderHqf的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PAT 甲级 1004  Counting Leaves

1004 Counting Leaves (30 point(s)) A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file cont...

漫浸天空的雨色的备忘录~ 1491

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

PAT甲级题目索引(题目+解析+AC代码)

emmmm,1001~1033的题解是英文的,后面的解析就都是中文的了,(当时想借此锻炼自己的英文水平但是最后发现效果不是太好而且浪费时间遂换回中文,就在这里说一下~) 题目信息 分值 PAT 甲级 1001 A+B Format 20 PAT 甲级 1002 A+B for Polynomials 25 PAT 甲级 1003 Emergency ...

漫浸天空的雨色的备忘录~ 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

PAT 甲级题目讲解:1004《Counting Leaves》

本文详细讲解 PAT 甲级 1004 题 *Counting Leaves* 的解题方法。题目要求从给定的族谱树中逐层统计叶子节点数量,核心思路为**邻接表建树 + BFS 层序遍历**,每层记录无孩子节点的个数。文章涵盖题目分析、样例解析、完整代码及常见错误提醒,并总结时间/空间复杂度均为 $\mathcal{O}(n)$,最后给出了思维拓展方向。

qq_35624947的博客 596

【PAT甲级】1004 Counting Leaves (30 分)

1004 Counting Leaves 题目描述 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one tes...

初见还是重逢的博客 312

PAT甲级 - 1004 Counting Leaves (30 分)

题目链接:(PAT甲级)1004 Counting Leaves (30 分) A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file...

272

「PAT甲级真题解析」Advanced Level 1004 Counting Leaves

1. 题设要求按照从根结点开始自顶向下输出树结构每一层的叶子结点数目。 2. 这意味着我们需要设置计数器, 然后遍历树的每一个结点, 然后检查该结点是否是叶子结点, 如果是叶子结点, 则将计数器中该层次叶子结点个数+1. 3. 遍历树结构叶子结点可以用深度优先dfs搜索和广度优先搜索bfs.

过美好生活,做高效程序员 4994

PAT(甲级)1004 Counting Leaves (30分)

题目来源:1004 Counting Leaves (30分) 题目描述: Sample Input: 2 1 01 1 02 Sample Output: 0 1 题目翻译: 一个家庭的层级结构经常被表现为一个家谱树。你的任务是统计这些家庭成员中谁没有孩子。 输入 每个输入文件包含一个测试实例。每个实例开始的一行包含N和M,N指树中的结点个数(0<N<100),M指非叶结点的个...

sinat_41835935的博客 274

PAT 甲级 1004 Counting Leaves

PAT 甲级 1004 Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one test case. Each case starts with a line containing 0<N

Jasonare的博客 375

PAT 1004 Counting Leaves

题目描述 英文 中文大意 通过输入的树找出 每一层有多少个叶子节点 样例输出 思路分析 用 dfs 深度优先遍历, 大致思路是寻找叶子节点, 如果找到在 record[] 数组对应的深度depth 加一 理解一下各个输入 N: 节点个数 M: 非叶子节点个数 ID: 非叶子节点标识 K: 此节点的儿子节点数 ID[i]: 此节点的儿子节点 首先接受 N、M, 叶子节点不用统计,所以根据M 获取节点 把每个节点的子节点都存入 vector[index] 通过判断vector[index].size()

唐五二七博客 187

PAT甲级(Advanced Level) Practice 1004 Counting Leaves

10 1in a line.家族等级通常由一棵血统树来呈现。您的任务是统计那些没有子女的家庭成员。每个输入文件包含一个测试用例。每个案例以一行开始,其中包含 0

2301_78006009的博客 1028

pat甲级1004 Counting Leaves

pat甲级1004 Counting Leaves 大家一起学习呀!因为数据量并不大,所以可以根据思路直接做 简单的并查集 下面贴上我的代码: #include &lt;iostream&gt; using namespace std; int main() { int f[101] = { 0 }; int n, m, i, j, k, id, a; int parent[101] = {...

mgjdaladala的博客 233
上一篇: [PAT甲级]1002. A+B for Polynomials (25)(求两个多项式的和)
下一篇: [PAT乙级]自测1
whl_program
博客等级 码龄11年 101粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值