Вхід:
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
Краще додати два ряди, ніж один стовпчик, оскільки для цього потрібно менше води.