При решении задачи нужно учесть тот факт, что если все числа, стоящие в углах квадратика, различны, то их сумма равна 17 (0+1+5+11=17). Заметим, что верно и обратное утверждение. Таким образом, нужно организовать вычисление и проверку сумм заданных квадратиков.

    Приведем текст программы:

Program Problem33_4; 
Var
  A: Array[1..50,1..50] Of Byte;
  m,i,j,sum:Byte;
Begin
  Write('Задайте размерность матрицы: ');
  ReadLn(m);
  WriteLn('Укажите элементы массива');
  For i:=1 To m Do
   For j:=1 To m Do
   Begin
    Write('A[', i, ',', j,']:=');
    ReadLn(A[i,j]);
   End;
  WriteLn('Исходный массив:');
  For i:=1 To m Do
   Begin
     For j:=1 To m Do
       Write(A[i,j]:3);
     WriteLn;
   End;
  sum:=0; {Начальное количество квадратиков.}
  For i:=1 To m-1 Do 
   For j:=1 To m-1 Do
        If A[i,j]+A[i,j+1]+A[i+1,j]+A[i+1,j+1]=17 Then sum:=sum+1;
  WriteLn('Количество искомых квадратиков = ',sum);
End.
Текст этой программы можно взять здесь.