есть матрица. в ней каждый элемент предстовляет элемент поля (ну, например, лист в клеточку (не очень хорошо выразился, понимаю )) прямоугольником считается одна закрашенная клеточка (1х1), 4 закрашенных клеточки (2х2), 6 (3х2) и т.д. но все клетки внутри прямоугольника должны быть закрашены, т.е. элементы матрицы являющиеся сторонами прямоугольника либо его внутренней частью = 1, остальные = 0. минимальное расстояние между прямоугольниками - 1 клетка. вопрос: как посчитать количество прямоугольников? у кого какие предложения?
Горбунов Олег а, ну тогда, наверно, так: просматриваем каждую клетку. если она закрашена И клетка сверху не закрашена И клетка слева не закрашена, то мы находимся в вершине очередного прямоугольника. $прямоугольников+=1. какую проверку разместить в начале -- зависит от преобладающей формы прямоугольников.
basist Это типичная алгоритмическая задача. Ее нужно сначала решить в уме, а потом уже реализовать решение на PHP (или другом языке программирования). Если тебе нужна помощь в первой части - то это не тот форум, хотя можем попытаться помочь но сначала надо условие уточнить. Сколько прямоугольников в таком фрагменте? Код (Text): ..x.. .xxx. xxxxx
Если таких вариантов по условию не должно быть - тогда решение Стаса годится (проверки на края матрицы только надо не забыть).
края матрицы, кстати, неважны, потому как в пхп условие $arr[-1][3] никогда не вернёт true... хотя нотис гарантирован... решайте сами. если матрица большая, то оптимальнее отключить нотисы, чем добавлять две дополнительные проверки на каждую клетку