Добрый день всем,
я пытаюсь постепенно повышать свой уровень в алгоритмах и структурах данных, немотря на то, что вуз уже закончил и практикую программирование. И вот, на практике, столкнулся с задачей, которую не могу решить оптимально, возможно, сообщество сможет что-то подсказать. В общем в чём суть. У нас есть прямоугольная таблица, каждая ячейка её, характеризуется свойством. Надо разбить эту таблицу на минимальное количество прямоугольных областей, в которых данное свойство будет одинаково. Области могут пересекаться. На выходе мы должны получить координаты левого верхнего угла области, а также ширину и высоту Каждой области. Например,что-то вроде такого (свойство заменено цифрой).
Входные данные
5 7
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
Выходные данные
2
1 1 5 4
1 5 5 3
Думал о том, что бы представить данную таблицу в виде графа, но как модифицировать его обход, даже не представляю. Возможно, у сообщества появятся какие-то идеи. Возможно, просто посоветуете, в сторону каких алгоритмов мне следует копать.