Учитывая матрицу размера nxn, найдите сумму зигзагообразной последовательности с наибольшей суммой. Зигзагообразная последовательность начинается сверху и заканчивается снизу. Два последовательных элемента последовательности не могут принадлежать одному столбцу.
Примеры:
Input : mat[][] = 3 1 2 4 8 5 6 9 7 Output : 18 Zigzag sequence is: 3->8->7 Another such sequence is 2->4->7 Input : mat[][] = 4 2 1 3 9 6 11 3 15 Output : 28
Эта проблема имеет Оптимальную Подструктуру .
Maximum Zigzag sum starting from arr[i][j] to a bottom cell can be written as : zzs(i, j) = arr[i][j] + max(zzs(i+1, k)), where k = 0, 1, 2 and k != j zzs(i, j) = arr[i][j], if i = n-1 We have to find the largest among all as Result = zzs(0, j) where 0 <= j < n
|
Джава
|
Python 3
|
C #
|
PHP
|
Выход:
Largest zigzag sum: 28
Перекрывающиеся подзадачи
Учитывая вышеприведенную реализацию, для матрицы mat [] [] размером 3 x 3, чтобы найти зигзагообразную сумму (zzs) для элемента mat (i, j), формируется следующее дерево рекурсии.
Recursion tree for cell (0, 0) zzs(0,0) / \ zzs(1,1) zzs(1,2) / \ / \ zzs(2,0) zzs(2,2) zzs(2,0) zzs(2,1) Recursion tree for cell (0, 1) zzs(0,1) / \ zzs(1,0) zzs(1,2) / \ / \ zzs(2,1) zzs(2,2) zzs(2,0) zzs(2,1) Recursion tree for cell (0, 2) zzs(0,2) / \ zzs(1,0) zzs(1,1) / \ / \ zzs(2,1) zzs(2,2) zzs(2,0) zzs(2,2)
Мы видим, что есть много подзадач, которые решаются снова и снова. Таким образом, эта проблема имеет свойство «Перекрывающаяся подструктура», и повторного вычисления тех же подзадач можно избежать, используя Memoization или Tabulation. Ниже приведена табличная реализация проблемы LIS.
|
Выход:
28
Рекомендации: Спросил в Directi
Эта статья предоставлена Аюшем Джаухари . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Распечатать данную матрицу в зигзагообразной форме
- Зигзагообразный (или диагональный) обход матрицы
- Самая большая прямоугольная подматрица, чья сумма равна 0
- Самая большая прямоугольная подматрица, имеющая сумму, кратную k
- Самая большая подматрица со всеми равными элементами
- Учитывая матрицу 'O' и 'X', найдите самый большой квадрат, окруженный 'X'
- Найти исходную матрицу, когда заданы самый большой элемент в строке и столбце
- Найти наибольшую площадь прямоугольной подматрицы, сумма которой равна k
- Самая большая прямоугольная подматрица с равным числом единиц и нулей
- Найти размер наибольшего «+», образованного всеми единицами в двоичной матрице
- Лексикографически наибольший простой путь от верхнего левого до нижнего правого в матрице
- Найти самый маленький и самый большой элемент из диагоналей квадратной матрицы
- Минимальное количество шагов для преобразования данной матрицы в верхнюю матрицу Гессенберга
- Минимальные шаги, необходимые для преобразования матрицы в нижнюю матрицу Гессенберга
- Минимальное количество шагов для преобразования данной матрицы в диагонально-доминантную матрицу
0.00 (0%) 0 votes