Skip to content

Instantly share code, notes, and snippets.

@korepwx

korepwx/rob.py Secret

Created March 9, 2018 03:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save korepwx/5c25d1035b669d51f1340e19dd73a084 to your computer and use it in GitHub Desktop.
Save korepwx/5c25d1035b669d51f1340e19dd73a084 to your computer and use it in GitHub Desktop.
An interesting problem
def rob(x):
rewards = [-1] * len(x)
tracks = [-1] * len(x)
rewards[0] = x[0]; rewards[1] = x[1]
tracks[0] = 0; tracks[1] = 1
best_end = 0 if rewards[0] > rewards[1] else 1
for i in range(2, len(x)):
for j in range(0,i-1):
if rewards[j] + x[i] > rewards[i]:
rewards[i] = rewards[j] + x[i]
tracks[i] = j
if rewards[i] > rewards[best_end]:
best_end = i
final_track = [best_end]
final_reward = rewards[best_end]
while tracks[best_end] != best_end:
best_end = tracks[best_end]
final_track.append(best_end)
return final_reward, list(reversed(final_track))
print(rob([1, 3, 7, 3, 11, 9, 2, 10]))
print(rob([1, 3, 7, 3, 2, 9, 10, 1]))
print(rob([1, 2, 3]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment