Проблема десериализации даты JSON в C # - добавление 2 часов

Если у меня есть сетка произвольного размера из квадратов одинакового размера (без промежутков между ними), мне нужно знать эффективный способ уменьшить их до минимального количества прямоугольников, например, если каждая звездочка представляет квадрат, то это может быть уменьшено до одного большого прямоугольника:

*****
*****
*****

Хотя это может быть уменьшено до двух прямоугольников:

  ***             ***
*****   =>  **(1) ***(2)
*****       **    ***
  ***             ***

Очевидное решение - собрать смежные квадраты в каждой строке, а затем собрать идентичные соседние строки. Для моего второго примера это приведет к обнаружению трех прямоугольников, что не является оптимальным.

  *** (1)

***** (2)
*****

  *** (3)

Мне интересно, есть ли более успешный и эффективный алгоритм для этого.

6
задан peterjwest 29 November 2010 в 14:37
поделиться