Магический/латинский квадрат

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Жасмин
Сообщения: 2
Зарегистрирован: 18 дек 2009, 22:06

Латинским квадратом порядка n называется квадратная таблица размером n*n каждая строка и столбец который содержит все числа от 1 до n. Проверить является ли заданная целочисленая матрица латинским квадратом на Pascal.Спасибо
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

Жасмин писал(а):Латинским квадратом порядка n называется квадратная таблица размером n*n каждая строка и столбец который содержит все числа от 1 до n. Проверить является ли заданная целочисленая матрица латинским квадратом на Pascal.Спасибо
Делается за 5 мин...
Возможно код кривой, пишу как умею + ночь))))

Код: Выделить всё

program latmatrix;

uses
 crt;

const
 n = 5;

var
 a : array[1..n,1..n] of integer;
 b : array[1..n] of boolean;
 i,j : integer;
 res : boolean;

procedure resetb(var ar : array of boolean);
var
 i : integer;
begin
 for i :=0 to high(ar) do
   ar[i] := false;
end;

begin
 clrscr;
 res := true;
 resetb(b);
 for i := 1 to n do
  begin
    for j := 1 to n do
     read(a[i,j]);
    writeln;
  end;

 for i:= 1 to n do
  begin
  for j := 1 to n do
   if(not b[a[i,j]])then
     b[a[i,j]] := true
   else
    begin
     res := false;
     break;
    end;
  if(not res)then
   break;
  resetb(b);
  end;

  if(res)then
  begin
   for i:= 1 to n do
    begin
     for j := 1 to n do
     if(not b[a[j,i]])then
      b[a[j,i]] := true
      else
       begin
        res := false;
         break;
         end;
     if(not res)then
       break;
     resetb(b);
    end;
  end;

  writeln(res);

 readkey;
end.
Жасмин
Сообщения: 2
Зарегистрирован: 18 дек 2009, 22:06

Спасибо болшое!!!
Ответить