Задача 149: Поиск подпоследовательности максимальной суммы
Посмотрев таблицу ниже, легко убедиться, что максимально возможная сумма смежных чисел в любом направлении (горизонтальная, вертикальная, диагональная или антидиагональная) равна 16 (= 8 + 7 + 1).
-25329-6513273-18-4 8
Теперь повторим поиск, но в гораздо большем масштабе:
Во-первых, сгенерируйте четыре миллиона псевдослучайных чисел, используя определенную форму так называемого «генератора с отложенным фибоначчи»:
Для 1 ≤ k ≤ 55, sk = [100003 - 200003k + 300007k3] (по модулю 1000000) - 500000. Для 56 ≤ k ≤ 4000000, sk = [sk-24 + sk-55 + 1000000] (по модулю 1000000) - 500000.
Таким образом, s10 = -393027 и s100 = 86613.
Затем термины s располагаются в таблице 2000 × 2000, используя первые 2000 номеров для заполнения первой строки (последовательно), следующих номеров 2000 для заполнения второй строки и т. Д.
Наконец, найдите наибольшую сумму (любое число) смежных записей в любом направлении (горизонтальное, вертикальное, диагональное или антидиагональное).