如何解决找到最大和,使得 n 叉树中没有两个元素相邻
我希望设计一种动态规划方法,根据给定的标准选择狮子以最大化总狩猎能力。
标准:狮子不能和直系父母一起去打猎
我设计了一种算法,但该算法无法正常工作。该算法有什么问题?
节点:
Lion data;
Node next,child;
public Node(Lion data)
{
this.data = data;
next = child = null;
}
最大化方法:
private int findParentHuntingAbility(Node root) {
return root.data.getHuntingAbility();
}
private int findKidsHuntingAbility(Node root) {
int sumOfKidsHuntingAbility = 0;
if(root.child != null) {
root = root.child;
while(root != null) {
sumOfKidsHuntingAbility += root.data.getHuntingAbility();
root = root.next;
}
}
return sumOfKidsHuntingAbility;
}
最大化狩猎能力的算法:
//Traverses tree in depth first order
public int findMaxHuntingAbility(Node root)
{
int maxHuntingAbility = 0;
if(root == null)
return 0;
while(root != null)
{
if(root.child != null)
findMaxHuntingAbility(root.child);
maxHuntingAbility += Math.max(findKidsHuntingAbility(root),findParentHuntingAbility(root));
root = root.next;
}
return maxHuntingAbility;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。