AlexSam's blog

By AlexSam, history, 9 years ago, In Russian

Добрый день всем,

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

Входные данные

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

Думал о том, что бы представить данную таблицу в виде графа, но как модифицировать его обход, даже не представляю. Возможно, у сообщества появятся какие-то идеи. Возможно, просто посоветуете, в сторону каких алгоритмов мне следует копать.

  • Vote: I like it
  • +38
  • Vote: I do not like it