Максимальная сумма подпоследовательности, у которой разница между их индексами равна разнице между их значениями

Опубликовано: 22 Сентября, 2022

Учитывая массив A[] размера N , задача состоит в том, чтобы найти максимальную сумму подпоследовательности, такую, что для каждой пары, присутствующей в подпоследовательности, разница между их индексами в исходном массиве равна разнице между их значениями.

Примеры:

Input: A[] = {10, 7, 1, 9, 10, 15}, N = 6
Output: 26
Explanation: 
Subsequence: {7, 9, 10}. 
Indices in the original array are {1, 3, 4} respectively.
Difference between their indices and values is equal for all pairs. 
Hence, the maximum possible sum = (7 + 9 + 10) = 26.

Input: A[] = {100, 2}, N = 2
Output:100 

Подход: для двух элементов, имеющих индексы i и j и значения A[i] и A[j], если i – j равно A[i] – A[j], то A[i] – i равно А[j] – j . Следовательно, допустимая подпоследовательность будет иметь то же значение A[i] – i . Выполните следующие шаги, чтобы решить проблему:

  • Инициализируйте переменную, скажем , как 0, чтобы сохранить максимально возможную сумму требуемой подпоследовательности.
  • Инициализируйте карту, скажем, mp, чтобы сохранить значение для каждого A[i] – i .
  • Выполните итерацию в диапазоне [0, N – 1] , используя переменную, скажем, i :
    • Добавьте A[i] к mp[A[i] – i].
    • Обновить ans как максимум ans и mp[A[i] – i].
  • Наконец, напечатайте ответ .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N)
Вспомогательное пространство: O(N)