2020# // Hence, if we starts from 2, next dfs calls can start from index of 2 or index of 3, but not index of 5 directly
2121# // Moreover, if we start from 3, next dfs calls can start from index of 3 or index of 5, but not index of 2 directly
2222
23+ # backtrack(8, [], 0)
24+ # β
25+ # ββ i = 0 pick 2 β backtrack(6, [2], 0)
26+ # β β
27+ # β ββ i = 0 pick 2 β backtrack(4, [2,2], 0)
28+ # β β β
29+ # β β ββ i = 0 pick 2 β backtrack(2, [2,2,2], 0)
30+ # β β β β
31+ # β β β ββ i = 0 pick 2 β backtrack(0, [2,2,2,2], 0) π’ success β return
32+ # β β β β
33+ # β β β ββ i = 1 pick 3 β backtrack(-1, [2,2,2,3], 1) π΄ β return
34+ # β β β β
35+ # β β β ββ i = 2 pick 5 β backtrack(-3, [2,2,2,5], 2) π΄ β return
36+ # β β β
37+ # β β ββ loop end β pop β combination = [2,2]
38+ # β β
39+ # β ββ i = 1 pick 3 β backtrack(1, [2,2,3], 1)
40+ # β β β
41+ # β β ββ i = 1 pick 3 β backtrack(0, [2,2,3,3], 1) π’ success β return
42+ # β β β
43+ # β β ββ i = 2 pick 5 β backtrack(-4, [2,2,3,5], 2) π΄ β return
44+ # β β
45+ # β ββ loop end β pop β [2,2]
46+ # β β
47+ # β ββ i = 2 pick 5 β backtrack(-1, [2,2,5], 2) π΄ β return
48+ # β
49+ # ββ loop end β pop β [2]
50+ # β
51+ # ββ i = 1 pick 3 β backtrack(3, [2,3], 1)
52+ # β β
53+ # β ββ i = 1 pick 3 β backtrack(0, [2,3,3], 1) π’ success β return
54+ # β β
55+ # β ββ i = 2 pick 5 β backtrack(-2, [2,3,5], 2) π΄ β return
56+ # β
57+ # ββ loop end β pop β [2]
58+ # β
59+ # ββ i = 2 pick 5 β backtrack(1, [2,5], 2)
60+ # β β
61+ # β ββ i = 2 pick 5 β backtrack(-4, [2,5,5], 2) π΄ β return
62+ # β
63+ # ββ loop end β pop β []
64+
65+
2366
2467
2568from typing import List
@@ -50,9 +93,3 @@ def backtrack(remaining: int, combination: List[int], start_index: int):
5093 # initial call
5194 backtrack (target , [], 0 )
5295 return result
53-
54-
55-
56-
57-
58-
0 commit comments