栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

蓝桥杯python初级赛题(2020蓝桥杯省赛题目python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯python初级赛题(2020蓝桥杯省赛题目python)

2021蓝桥杯省赛左兄弟右孩子(python组)

这是一个来自2021年蓝桥杯的题目,分值占比比较大,将树的题目用动态规划和dfs来解决。


将树放到列表中

输入要按照数的要求放到一个数组中 类如上面的官方给出来的例子,1,2,3,4,5 其中的2,3,4都是1 的孩子,5是2的孩子进行将数据放到对应的列表中。

n=int(input())  #输入n的个数
a=[[] for i in range(n+1)]  #创建到n的数组
for i in range(2,n+1):      #后面的数放到对应的父节点的列表中
    t=int(input())          #输入对应的父节点 1,1,1,2
    a[t].append(i)
进行遍历得出答案

在遍历得过程中我们应该知道它的最大长度会是它自己的深度加上兄弟的数,求出来他们中的最大值

def dfs(t):
    ans=0
    for i in range(len(a[t])):
        ans=max(ans,dfs(a[t][i])+len(a[t]))
    return ans
print(dfs(1))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号