Подсчитайте количество «дырок» в битовой карте

Рассмотрим битовую карту MxN, в которой ячейки равны 0 или 1. '1' означает заполнение, а '0' означает пустоту.

Найдите количество 'дырок' в битовой карте, где дыра - это непрерывная область пустых ячеек.

Например, в ней две дыры:

11111  
10101  
10101  
11111  

... и только одна:

11111  
10001  
10101  
11111

Какой самый быстрый способ, когда M и N находятся между 1 и 8?

Уточнение : диагонали не считаются смежными, имеет значение только боковая смежность.

Примечание : Я ищу что-то, что использует преимущества формата данных. Я знаю, как преобразовать это в график и [BD] FS, но это кажется излишним.

14
задан Jacob 17 February 2011 в 16:19
поделиться