|
20 | 20 | ### (3,counter=True) (3,counter=False) (counter=True mean 1 is choosen,so avoid 3) |
21 | 21 | # / / \ |
22 | 22 | ### (2,counter=False) (2,True) (2,False) |
23 | | -# (here 2,False means 1 is choosen, so we avoid 3 and |
| 23 | +# (here 2,False means 1 is choosen, so we avoid 3 and |
24 | 24 | # as 3 is avoided now again we are free to choose at house 2) |
25 | 25 |
|
26 | 26 |
|
27 | 27 | ## Note: dp[i][0]=>0 is True and 1 is False in convention. |
28 | 28 | def rob(nums): |
29 | | - def helper(nums,dp,i,j): |
30 | | - if i<0: |
| 29 | + def helper(nums, dp, i, j): |
| 30 | + if i < 0: |
31 | 31 | return 0 |
32 | | - if dp[i][j]!=-1: |
| 32 | + if dp[i][j] != -1: |
33 | 33 | return dp[i][j] |
34 | | - if j==True: |
35 | | - dp[i][0]=helper(nums,dp,i-1,False) |
| 34 | + if j == True: |
| 35 | + dp[i][0] = helper(nums, dp, i - 1, False) |
36 | 36 | return dp[i][0] |
37 | 37 | else: |
38 | | - dp[i][1] = max(nums[i] + helper(nums,dp,i-1,True), helper(nums,dp,i-1,False)) |
| 38 | + dp[i][1] = max( |
| 39 | + nums[i] + helper(nums, dp, i - 1, True), helper(nums, dp, i - 1, False) |
| 40 | + ) |
39 | 41 | return dp[i][1] |
40 | | - dp=[[-1]*2 for _ in range(0,len(nums))] |
41 | | - return helper(nums,dp,len(nums)-1,False) |
42 | | - |
| 42 | + |
| 43 | + dp = [[-1] * 2 for _ in range(0, len(nums))] |
| 44 | + return helper(nums, dp, len(nums) - 1, False) |
| 45 | + |
| 46 | + |
43 | 47 | if __name__ == "__main__": |
44 | | - nums=[2,7,9,3,1] |
45 | | - if not nums: |
46 | | - print('The list is empty') |
| 48 | + nums = [2, 7, 9, 3, 1] |
| 49 | + if not nums: |
| 50 | + print("The list is empty") |
47 | 51 | else: |
48 | | - max_amount=rob(nums) |
| 52 | + max_amount = rob(nums) |
49 | 53 | print(max_amount) |
50 | | - |
51 | | - |
52 | | - |
|
0 commit comments