Алгоритм вырезания шва или его более сложная версия используется для изменения размера изображения с учетом содержимого в различных графических программах и библиотеках. Давай в гольф это!
Ваш ввод будет прямоугольным двумерным массивом целых чисел.
В результате вы получите тот же массив, на один столбец уже, с одной записью, удаленной из каждой строки, причем эти записи представляют путь сверху вниз с наименьшей суммой всех таких путей.
https://en.wikipedia.org/wiki/Seam_carving
На приведенном выше рисунке значение каждой ячейки показано красным. Черные числа являются суммой значения ячейки и самого низкого черного числа в одной из трех ячеек над ней (на которые указывают зеленые стрелки). Белые выделенные пути - это два пути с наименьшей суммой, оба с суммой 5 (1 + 2 + 2 и 2 + 2 + 1).
В случае, когда для наименьшей суммы связаны два пути, не имеет значения, какой из них вы удалите.
Ввод должен быть взят из стандартного ввода или в качестве параметра функции. Он может быть отформатирован удобным для вас языком, включая скобки и / или разделители. Пожалуйста, укажите в своем ответе, как ожидается ввод данных.
Вывод должен быть в стандартный вывод в формате с разделителями или в виде возвращаемого функцией значения в вашем языке, эквивалентном массиву 2d (который может включать в себя вложенные списки и т. Д.).
Примеры:
Input:
1 4 3 5 2
3 2 5 2 3
5 2 4 2 1
Output:
4 3 5 2 1 4 3 5
3 5 2 3 or 3 2 5 3
5 4 2 1 5 2 4 2
Input:
1 2 3 4 5
Output:
2 3 4 5
Input:
1
2
3
Output:
(empty, null, a sentinel non-array value, a 0x3 array, or similar)
РЕДАКТИРОВАТЬ: все числа будут неотрицательными, и каждый возможный шов будет иметь сумму, которая вписывается в 32-разрядное целое число со знаком.