派对的最大快乐值
原创
©著作权归作者所有:来自51CTO博客作者放下也不自在的原创作品,请联系作者获取转载授权,否则将追究法律责任
import java.util.ArrayList;
* 一棵多叉树代表员工的上下级关系,孩子节点是父节点的直接下级。
* 大家参加了party,要求一个员工去了则它的所有直接下级都不能去,问参加party能得到的最大快乐值是多少。
public static int maxHappy(Employee boss) {
ResultInfo all = process(boss);
return Math.max(all.yes, all.no);
public static ResultInfo process(Employee x) {
return new ResultInfo(x.happy, 0);
for (Employee next : x.nexts) {
ResultInfo nextInfo = process(next);
no += Math.max(nextInfo.yes, nextInfo.no);
return new ResultInfo(yes, no);
public static class ResultInfo {
public ResultInfo(int y, int n) {
public static class Employee {
public List<Employee> nexts;
nexts = new ArrayList<>();
/* 如有意见或建议,欢迎评论区留言;如发现代码有误,欢迎批评指正 */