Я пытаюсь использовать метод dp, чтобы найти лучшее решение, код ниже не работает.
def max_reward_schedule(rewards, Task_durations):
n = len(rewards)
m = len (task_durations)
# Инициализировать таблицу DP
dp = [[0] * (n + 1) for _ in range(m + 1)]
# Заполните таблицу DP от m до n, чтобы найти лучшую награду
для i в диапазоне (1, m + 1):
для j в диапазоне (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]]) + sum(rewards[j - Task_durations[i - 1]:j]))
else:
dp[i ][j] = dp[i - 1][j]
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)