繁体   English   中英

在pickTrees中返回treeHelper方法时应该传递什么作为“树”?

[英]What should be passed as "tree" when returning the treeHelper method in pickTrees?

问题来了:你用木头建造房屋,你需要来自附近森林的材料。 但是,您想避免砍伐森林,因此您决定每砍伐一棵树,就不要管它的邻居,让森林有时间恢复。 但是,您仍然需要尽可能多的木材,因此您必须小心选择要砍伐的树木。 编写 picktrees,它接收 n 棵树 arr 的数组,其中 arr[i] 表示通过砍伐树 i 可以收获多少木材。 它应该返回你可以收获的最大木材量,同时遵循跳过邻居的规则:

到目前为止,这是我的代码

public static int pickTrees(int[] arr) {
    return treeHelper(arr, ?);
}

public static int treeHelper(int[] arr, int tree){
    if (arr.length < tree){
        return 0;
    }
    if ((arr.length)-1 == tree){
        return 1;
    }
    int sum = arr[tree]+treeHelper(arr, tree+2);

    int otherSum = arr[tree+1]+treeHelper(arr, tree+3);

    return Math.max(sum, otherSum);

}

树应该是被“削减”并添加到变量 sum 和其他 sum 的数组的索引。 因为我在 treeHelper 方法中定义它,所以在 pickTrees 方法中使用它时,我不确定应该将什么作为树传递。 当我使用 arr.length 时,我得到了一个越界错误,这是有道理的,因为基本情况永远不会是真的/达到。

尝试通过 Set of Integer PickTrees 作为第二个参数 treeHelper。

尝试从这里继续,首先尝试理解 treeHelper 返回值的含义。

(我的回答是提示而不是完整的解决方案,因为我认为边做边学是最好的学习方式)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM