2021-11-28:有一棵树,给定头节点h,和结构数组m,下标0弃而不用。 比如h = 1, m = [ [] , [2,3], [4], [5,6], [], [], []]
2021-11-28:有一棵树,给定头节点h,和结构数组m,下标0弃而不用。
比如h = 1, m = [ [] , [2,3], [4], [5,6], [], [], []],
表示1的孩子是2、3; 2的孩子是4; 3的孩子是5、6; 4、5和6是叶节点,都不再有孩子,
每一个节点都有颜色,记录在c数组里,比如c[i] = 4, 表示节点i的颜色为4,
一开始只有叶节点是有权值的,记录在w数组里,
比如,如果一开始就有w[i] = 3, 表示节点i是叶节点、且权值是3。
现在规定非叶节点i的权值计算方式:
根据i的所有直接孩子来计算,假设i的所有直接孩子,颜色只有a,b,k。
w[i] = Max {
(颜色为a的所有孩子个数 + 颜色为a的孩子权值之和),
(颜色为b的所有孩子个数 + 颜色为b的孩子权值之和),
(颜色为k的所有孩子个数 + 颜色k的孩子权值之和)
}
请计算所有孩子的权值并返回。
来自美团。
答案2021-11-28:
这道题考的是语文。后序遍历。
当前来到h节点,
h的直接孩子,在哪呢?m[h] = {a,b,c,d,e},
每个节点的颜色在哪?比如i号节点,c[i]就是i号节点的颜色,
每个节点的权值在哪?比如i号节点,w[i]就是i号节点的权值,
void : 把w数组填满就是这个函数的目标。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
h := 1
m := [][]int{{}, {2, 3}, {4}, {5, 6}, {}, {}, {}}
w := []int{0, 0, 0, 4, 5, 6, 0}
c := []int{0, 0, 0, 4, 3, 2, 0}
w0(h, m, w, c)
fmt.Println(w)
fmt.Println(c)
}
func w0(h int, m [][]int, w []int, c []int) {
if len(m[h]) == 0 { // 叶节点
return
}
// 有若干个直接孩子
// 1 7个
// 3 10个
colors := make(map[int]int)
// 1 20
// 3 45
weihts := make(map[int]int)
for _, child := range m[h] {
w0(child, m, w, c)
colors[c[child]]++
weihts[c[child]] += +w[c[child]]
}
for color, _ := range colors {
w[h] = getMax(w[h], colors[color]+weihts[color])
}
}
func getMax(a int, b int) int {
if a > b {
return a
} else {
return b
}
}
执行结果如下:

2021-11-28:有一棵树,给定头节点h,和结构数组m,下标0弃而不用。 比如h = 1, m = [ [] , [2,3], [4], [5,6], [], [], []]的更多相关文章
- hdu6035 Colorful Tree 树形dp 给定一棵树,每个节点有一个颜色值。定义每条路径的值为经过的节点的不同颜色数。求所有路径的值和。
/** 题目:hdu6035 Colorful Tree 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6035 题意:给定一棵树,每个节点有一个颜色值.定 ...
- 2021.11.10 fail树
2021.11.10 fail树 https://blog.csdn.net/niiick/article/details/87947160 1. AC自动机与fail树的神奇关系 1.1 AC自动机 ...
- 2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机)
2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机) https://www.luogu.com.cn/problem/P2292 题意: 标点符号的出现晚于文字的出 ...
- Trees in a Wood. UVA 10214 欧拉函数或者容斥定理 给定a,b求 |x|<=a, |y|<=b这个范围内的所有整点不包括原点都种一棵树。求出你站在原点向四周看到的树的数量/总的树的数量的值。
/** 题目:Trees in a Wood. UVA 10214 链接:https://vjudge.net/problem/UVA-10214 题意:给定a,b求 |x|<=a, |y|&l ...
- SDUT 2129 树结构练习——判断给定森林中有多少棵树
树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 众 ...
- js实现一棵树的生长
参考链接:https://blog.csdn.net/u010298576/article/details/76609244 HTML网页源码: 1 <!DOCTYPE html> 2 & ...
- WPF的两棵树与绑定
原文:WPF的两棵树与绑定 先建立测试基类 public class VisualPanel : FrameworkElement { protected VisualCollection Chi ...
- 牛客练习赛11 假的字符串 (Trie树+拓扑找环)
牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字 ...
- 数据结构和算法(Golang实现)(28)查找算法-AVL树
AVL树 二叉查找树的树高度影响了查找的效率,需要尽量减小树的高度,AVL树正是这样的树. 一.AVL树介绍 AVL树是一棵严格自平衡的二叉查找树,1962年,发明者Adelson-Velsky和La ...
- 【2020.11.28提高组模拟】T1染色(color)
[2020.11.28提高组模拟]T1染色(color) 题目 题目描述 给定 \(n\),你现在需要给整数 \(1\) 到 \(n\) 进行染色,使得对于所有的 \(1\leq i<j\leq ...
随机推荐
- vTaskList() 介绍
vTaskList() 使用注意:使用 vTaskList() 前需使能: make menuconfig -> Component config -> FreeRTOS -> En ...
- ElasticSearch 实现分词全文检索 - term、terms查询
数据准备 ElasticSearch 实现分词全文检索 - 测试数据准备 ElasticSearch的各种查询 不会对查询关键字进行分词 term 查询 term的查询是代表完全匹配,搜索之前不会对你 ...
- Python学习笔记--数据输出
数据输出 输出为Python对象 collect算子 具体实现: reduce算子 具体实现: take算子 具体实现: count算子 具体实现: 输出到文件中 saveAsTextFile算子 具 ...
- Python学习笔记--PySpark的相关基础学习(一)
PySpark包的下载 下载PySpark第三方包: 构建PySpark的执行环境入口对象 PySpark的编程模型 数据输入 对于SparkContext对象里面的成员方法parallelize,支 ...
- 深入理解 Python 虚拟机:集合(set)的实现原理及源码剖析
深入理解 Python 虚拟机:集合(set)的实现原理及源码剖析 在本篇文章当中主要给大家介绍在 cpython 虚拟机当中的集合 set 的实现原理(哈希表)以及对应的源代码分析. 数据结构介绍 ...
- SpringBoot——自定义start
更多内容,前往 IT-BLOG 一.Mybatis 实现 start 的原理 首先在写一个自定义的 start 之前,我们先参考下 Mybatis 是如何整合 SpringBoot:mybatis-s ...
- 常用ADB命令使用方法
移动端操作流程 在设置中找到关于手机(或关于平板电脑) 连续点击版本号5次 在系统和更新中点击开发者选项 打开USB调试功能 PC端操作流程 打开cmd或powershell 移动到adb.exe所在 ...
- Python常见部分内置方法与操作
Python常见内置方法与操作 整型int 类型转换 int(其它数据类型),但只支持数字类型和小数类型 >>> num1 = input('Your age>>> ...
- LeeCode 动态规划(二)
01背包问题 题目描述 有 n 件物品和容量为 w 的背包,给你两个数组 weights 和 values ,分别表示第 i 件物品的重量和价值,每件物品只能使用一次,求解将哪些物品装入背包可使得物品 ...
- 全新跨平台版本.NET敏捷开发框架-RDIFramework.NET5.0震撼发布
RDIFramework.NET,基于全新.NET Framework与.NET Core的快速信息化系统敏捷开发.整合框架,给用户和开发者最佳的.Net框架部署方案.为企业快速构建跨平台.企业级的应 ...