為什麼這篇backtrack意思鄉民發文收入到精華區:因為在backtrack意思這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者yogaxiao (電腦壞了ˊ_ˋ)看板java標題[問題] Java 遞迴 recursion...
最近在練習解題, 但對於這題recursion的答案一直不是很理解,
有把解答貼到eclipse用debugger刷了好幾遍但還是不懂它跳的順序...
不知道是否有文字敘述能幫助我理解, 感謝各位
Problem:
Given an array of ints, is it possible to choose a group of some of the ints,
such that the group sums to the given target? This is a classic backtracking
recursion problem. Once you understand the recursive backtracking strategy in
this problem, you can use the same pattern for many problems to search a
space of choices. Rather than looking at the whole array, our convention is
to consider the part of the array starting at index start and continuing to
the end of the array. The caller can specify the whole array simply by
passing start as 0. No loops are needed -- the recursive calls progress down
the array.
groupSum(0, {2, 4, 8}, 10) → true
groupSum(0, {2, 4, 8}, 14) → true
groupSum(0, {2, 4, 8}, 9) → false
Solution:
public boolean groupSum(int start, int[] nums, int target) {
if (start >= nums.length) {
return (target == 0);
}
if (groupSum(start + 1, nums, target - nums[start])) return true;
if (groupSum(start + 1, nums, target)) return true;
return false;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.222.33
※ 文章網址: https://www.ptt.cc/bbs/java/M.1550842356.A.AEA.html