Вступ:
Натхненний цими двома питаннями SO (без сумніву, того ж класу): друкуйте елементи в підматриті максимальної суми без суміжних елементів java та Максимальної суми суміжних елементів масиву для друку .
Виклик:
Враховуючи список цілих чисел, виведіть підряд, що складається з суміжних елементів, які мають найбільшу суму. Ось кілька прикладів:
[1,2,3,-1,-3,2,5]
призведе до[1,3,5]
(з сумою9
) при 0-індексах[0,2,6]
.[4,5,4,3]
призведе до або[4,4]
(із сумою8
) при 0-індексах,[0,2]
або[5,3]
(також із сумою8
) при 0-індексах[1,3]
.[5,5,10,100,10,5]
призведе до[5,100,5]
(із сумою110
) або на 0-індексах,[0,3,5]
або[1,3,5]
.
Що найважливіше в цих прикладах, наведених вище, показники, що містять елементи, розташовані як мінімум на відстані один від одного. Якщо ми розглянемо приклад [5,5,10,100,10,5]
більш глибоко: у нас є наступна потенційна послідовність, що містить не сусідні елементи; з їх індексами нижче; з їх сумами нижче, ніж:
[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums
Оскільки максимальні суми є 110
, ми виводимо [5,100,5]
як результат.
Правила виклику:
- Вам дозволяється виводити пари ключ-значення індексу + значення. Тож замість
[5,100,5]
вас можна вивести[[0,5],[3,100],[5,5]]
або[[1,5],[3,100],[5,5]]
як результат (або[[1,5],[4,100],[6,5]]
/[[2,5],[4,100],[6,5]]
коли використовується індексація на основі 1, а не 0).- Якщо ви використовуєте пари ключ-значення, вони також можуть бути в зворотному або випадковому порядку, оскільки зрозуміло, які значення мають на увазі парний індекс.
- Виведення лише індексів без значень заборонено. Він повинен або виводити значення, або значення / індекси як пари ключів-значень (або два розділені списки для 'ключів' і 'значень' одного розміру, якщо пари ключових значень неможливі у вашій вибраній мові).
- Вам дозволяється виводити всі можливі послідовності з максимальною сумою замість лише однієї.
- Як видно з прикладів, вхідний список також може містити негативні та дублювані значення. Можна припустити, що вхідні цілі числа знаходяться в межах .
- Список вихідних даних не може бути порожнім і завжди повинен містити щонайменше один елемент (якщо список міститиме лише негативні значення, тоді список, що містить одне найменше негативне значення, буде виведено як результат - див. Останні два тестові випадки).
- Якщо є один можливий вихід, але для декількох різних індексів, дозволено виводити їх обох, навіть якщо вони можуть виглядати дублікатами. (тобто наведений вище приклад може виводитись
[[5,100,5],[5,100,5]]
для обох можливих комбінацій індексів).
Тестові приклади:
Input: Possible outputs: At 0-based indices: With sum:
[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0
powerset
це набір підмножин чи не так? але схоже, що ви повертаєте набір підзаконних даних? [4,5,4,3] призведе до будь-якого [4,4], де [4,4] явно не є набором.
[5,100,5]
двічі для вашого третього прикладу.