Как стать автором
Обновить
35.17
CodeAbbey
Веб-сайт с задачами по программированию

Белый Прямоугольник (классическая задачка вместо приветствия)

Время на прочтение2 мин
Количество просмотров2.2K

Оказывается Хабр доброжелательно предоставляет возможность завести бесплатный «корпоративный» блог для опенсорсного проекта. Какое‑то время назад я подал заявку — и недавно обнаружил что она была удовлетворена. Начинать программисты любят с «тестового» поста, но т.к. речь идёт о публичном пространстве, пусть он будет хоть немного содержательным:)

На сайт CodeAbbey сегодня добавилась задачка про поиск Белого Прямоугольника. Речь идёт о матрице в которой есть чёрные и белые клетки — расставленные достаточно хаотично — и хочется найти прямоугольник без чёрных клеток максимальной площади (со сторонами параллельными сторонам матрицы, конечно).

Про сам сайт мы ещё расскажем в отдельно (иначе зачем блог было заводить) — а сейчас всё же про саму задачку.

Она, по‑видимому, древняя как мир. Я на неё наткнулся где‑то в конце книжки Ж.Арсака «Программирование Игр и Головоломок» — причём он упоминает что сам встретил её на какой‑то олимпиадке за несколько лет до того. А книжка‑то 1985 года.

Интересно что при очень простом описании самый банальный алгоритм который приходит в голову имеет сложность O(N^6) где N — сторона матрицы. Конечно нынешние компьютеры уже не те что в 80х годах, но если вы заимплементите такой «брутефорс» — то даже на скромных размерах тестовых данных которые предлагает сайт, работать он у вас будет сколько‑то секунд... Заметно не мгновенно.

Гораздо более сносный алгоритм O(N^3) можно реализовать достаточно несложно (именно он срабатывает при загрузке страницы и генерации данных на сайте).

Возможно оптимальный алгоритм за O(N^2) уже требует немножко поднапрячь мозги — но впрочем его не очень сложно нагуглить (сложнее понять).

Теги:
Хабы:
Всего голосов 8: ↑5 и ↓3+4
Комментарии12

Публикации

Информация

Сайт
www.codeabbey.com
Дата регистрации
Дата основания
Численность
1 человек (только я)
Представитель
Родион Горковенко