本题给定一个庞大家族的家谱要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N不超过 100 000 的正整数 —— 简单起见我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号其中第 i 个编号对应第 i 位成员的父母。家谱中辈分最高的老祖宗对应的父母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分老祖宗的辈分为 1以下逐级递增。然后在第二行按递增顺
该程序使用了动态规划的思想,通过递归地求解每个人的辈分,并记录下来,最终找到整个家族中最小的辈分。
程序中使用了两个数组,f数组和a数组,分别用来存储每个人的父/母编号和辈分。
f数组的下标表示家族成员的编号,数组的值表示该成员的父/母编号。家族成员的编号从1到N,其中老祖宗的父/母编号为-1。
a数组的下标表示家族成员的编号,数组的值表示该成员的辈分。初始化a数组为0。
程序首先读取家族人口总数N,并根据N初始化f数组和a数组。
接下来,程序读取N个编号,将其存储到f数组中。
然后,程序通过find函数递归地求解每个人的辈分,并将结果存储到a数组中。
最后,程序找到a数组中的最大值,即为家族中最小的辈分,将其输出。
然后,程序遍历a数组,找到辈分等于最小辈分的成员编号,并按递增顺序输出。
最终,程序输出了最小的辈分以及辈分最小的成员的编号。
该程序没有涉及文件操作或数据库操作,只是通过数组进行数据存储和计算。
原文地址: http://www.cveoy.top/t/topic/iRXo 著作权归作者所有。请勿转载和采集!