Дана целочисленная матрица MxN, каждый элемент которой равен 0,1,2 или 3. Определить количество четверок, A[i,j],A[i+1,j],A[i+2,j],A[i+3,j], в каждой из которой все элементы различны — Pascal(Паскаль)

const nmax=20;
var a:array[1..nmax,1..nmax] of byte;
    m,n,i,j,k,p,s:byte;
    k4:integer;
    b:set of byte;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(4);
    write(a[i,j]:3);
   end;
  writeln;
 end;
writeln;
k4:=0;//количество четверок
for i:=1 to m-1 do//проход по матрице
for j:=1 to n-1 do
 begin
  b:=[];//пустое множество
  s:=0;//количество разных в четверке
  for k:=i to i+1 do//идем по четверке(квадрат 2х2)
  for p:=j to j+1 do
  if not(a[k,p] in b) then//если нет числа в множестве
   begin
    s:=s+1;//считаем
    b:=b+[a[k,p]];//добавляем
   end;
  if s=4 then k4:=k4+1;//если все разные +1
 end;
write('Количество четверок [0..3]=',k4);
readln
end.

Leave a Comment

63 + = 67