[英]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.