def max_reward_schedule(rewards, task_durations):
n = len(rewards)
m = len (task_durations)
# DP-Tabelle initialisieren
dp = [[0] * (n + 1) für _ in range(m + 1)]
# Füllen Sie die DP-Tabelle von m bis n aus, um die beste Belohnung zu finden
für i im Bereich(1, m + 1):
für j im Bereich(1, n + 1) :
if j >= task_durations:
if j - task_durations == 0:
dp[j] = max(dp[j], dp[j - task_durations] + sum(rewards[j - task_durations:j]))
else:
dp[j] = max(dp[j], max(max(dp[:j - task_durations[i - 1]]), max(dp[i - 1][j + task_durations[i]]

else:
dp[i ][j] = dp[i - 1][j]
Code: Select all
print(dp)
return max_reward
rewards_24_hours = [8, 6, 5, 6, 1, 1, 4, 4, 5, 2, 6, 8] #np.random.randint(1, 10, size=12)
task_durations = [3,2,4]
max_reward = max_reward_schedule(rewards_24_hours, task_durations)