D


私信TA

用户名:ALS1111

访问量:19630

签 名:

等  级
排  名 51
经  验 10975
参赛次数 0
文章发表 132
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

python-铺地毯
浏览:178
python-项链项链
浏览:220
python-密码锁
浏览:162

解题思路:

参考博客:https://blog.csdn.net/qq_52652816/article/details/122333311

具体思路可以参考上面连接。

我用python分别写了递归的解法和动态数组的解法,但都超时了,73分。

思路是一样的,其实时间复杂度两种方法也差不多。


注意事项:


参考代码:

递归:

def dfs(node):  
    global Tree  
      
    m = 0  
    for i in range(len(Tree[node])):  
        m = max(m,dfs(Tree[node][i]))  
  
    return m + len(Tree[node])  
  
  
if __name__ == '__main__':  
    n = int(input())  
    Tree = [[] for i in range(n+1)]  
    for i in range(2,n+1):  
        f = int(input())  
        Tree[f].append(i)  
  
    maxheight = dfs(1)  
    print(maxheight)

动态数组:

def f(n):  
    Tree = [[] for i in range(n+1)]  
    for i in range(2,n+1):  
        f = int(input())  
        Tree[f].append(i)  
  
    dp = [0 for i in range(n+1)]  
    for i in range(n,0,-1):  
        for j in range(len(Tree[i])):  
            dp[i] = max(dp[i],len(Tree[i]) + dp[Tree[i][j]])  
  
    print(dp[1])  
  
  
if __name__ == '__main__':  
    n = int(input())  
    f(n)


 

0.0分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区