公司员工参加晚会问题

【题目】一个公司的上下节关系是一棵多叉树,这个公司要举办晚会,你作为组织者已经摸清了大家的心理:一个员工的直
接上级如果到场,这个员工肯定不会来。每个员工都有一个活跃度的值,决定谁来你会给这个员工发邀请函,怎么
让舞会的气氛最活跃?返回最大的活跃值。

public class MaxHappy {
	public static class Node {
		public int huo;//此员工的活跃值
		public List<Node> nexts;//此员工的下级员工集合

		public Node(int huo, List<Node> nexts) {
			this.huo = huo;
			this.nexts = new ArrayList<Node>();
		}
	}

	public static class ReturnType {
		public int lai_huo;
		public int bu_lai_huo;

		public ReturnType(int lai_huo, int bu_lai_huo) {
			this.lai_huo = lai_huo;
			this.bu_lai_huo = bu_lai_huo;
		}
	}

	public static ReturnType process(Node head) {
		int lai_huo = head.huo;
		int bu_lai_huo = 0;
		for (int i = 0; i < head.nexts.size(); i++) {
			Node next = head.nexts.get(i);
			ReturnType nextData = process(next);
			lai_huo += nextData.bu_lai_huo;
			bu_lai_huo += Math.max(nextData.lai_huo, nextData.bu_lai_huo);
		}
		return new ReturnType(lai_huo, bu_lai_huo);
	}

	public static int getMaxHuo(Node head) {
		ReturnType returnData = process(head);
		return Math.max(returnData.bu_lai_huo, returnData.lai_huo);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值