Как получить решение для нескольких подпоследовательностей без перекрытия списка? [закрыто]Python

Программы на Python
Ответить
Anonymous
 Как получить решение для нескольких подпоследовательностей без перекрытия списка? [закрыто]

Сообщение Anonymous »

пример [8, 6, 5, 6, 1, 1, 4, 4, 5, 2, 6, 8], три окна размеров 3,2,4, поэтому результат должен быть [8,6 ,5,6] для размера окна 4, [4,4,5] для окна 3, [6, 8] для окна 2, их сумма равна 52.

Три подсписки не перекрываются и являются непрерывными для каждого.
Я стараюсь использовать метод DP, чтобы найти лучшее решение.

Приведенный ниже код не работает.
def max_reward_schedule(rewards, task_durations):
n = len(rewards)
m = len(task_durations)
# Initialize DP table
dp = [[0] * (n + 1) for _ in range(m + 1)]
# Fill DP table, from the m to the n, to find the best reward
for i in range(1, m + 1):
for j in range(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]
task_durations = [3,2,4]
max_reward = max_reward_schedule(rewards_24_hours, task_durations)


Подробнее здесь: https://stackoverflow.com/questions/793 ... for-a-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»