Незнаю может можно как-то оптимизировать алгоритм, но если совсем просто(по колхозному), то примерно так решается: имеется матрица A размером mxn
Code
// C/C++
for(int i = 0; i < m - 1; ++i)
{
int count = 0;
for(int j = 0; j < n - 1; ++j)
{
if(A[i][j])
count++;
if(A[i][j+1])
count++;
if(A[i+1][j])
count++;
if(A[i+1][j+1])
count++;
}
if(count >= 3)
{
// Тут надо это как-то запомнить
}
}
Все конечно зависит от конкретной задачи, но если ты хочешь заменить все "уплотнения" нулями, то нужно делать двупроходный алгоритм, на первом шаге найти и запомнить скопления единиц, на втором заменить их нулями. В противном случае, если занулять на ходу, можно потерять часть скоплений.