Входные данные:
2D-массив, содержащий два разных (необязательных) значения. Я буду использовать 0 и 1 при объяснении правил. Формат ввода, конечно, гибкий.
Вызов:
Нули - это вода, а одни - острова. Чтобы обеспечить одиночество, ваша задача - окружить все острова водой, вставив ряды и столбцы нулей. Вы не хотите тратить воду, поэтому вы должны минимизировать количество добавленной воды. Если существует более одного раствора, требующего одинакового количества воды, вам следует добавлять столбцы воды, а не ряды. Я покажу это в тестовых случаях.
Вывод:
Новый, модифицированный 2D массив. Формат вывода, конечно, гибкий.
Тестовые случаи:
Вход и выход разделены тире. Добавленные нули показаны жирным шрифтом. Используйте один из ответов здесь, если вы хотите преобразовать контрольные примеры в более удобные форматы.
1
---
1
1 1
---
1 0 1
1 1
1 1
---
1 0 1
0 0 0
1 0 1
1 0
0 1
---
1 0 0
0 0 1
Обратите внимание, что мы добавили столбец нулей, а не ряд нулей. Это связано с тем, что количество необходимых нулей равно и столбцы должны быть предпочтительными.
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
---
1 0 0 0 1
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 1 0 1 0
Обратите внимание, что мы добавили строки, а не столбцы, поскольку для этого требуется наименьшее количество дополнительных нулей.
0 0 1 0 0
0 1 1 1 0
---
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 1 0
Это потребовало как столбцы, так и строки.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Лучше добавить две колонки, чем одну строку, так как для этого требуется меньше воды.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Лучше добавить две строки, чем один столбец, так как для этого требуется меньше воды.