Программа нахождения волшебного квадрата размером 9Х9

Магический, или волшебный квадрат — это квадратная таблица, заполненная n2 числами, таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях оказывается одинаковой.

code: #pascal
program volhebniy_kvadrat;
 uses crt;
 var
 per,a:array[1..9] of integer;
 incl:array[1..9] of boolean;
 s:array[1..8] of integer;
 t,i,j:integer;
 nep:boolean;
procedure perest(p:integer);
 var
 c:integer;
 begin
  if p-1=9 then begin
   nep:=false;
   s[1]:=per[1]+per[5]+per[9];
   s[2]:=per[1]+per[4]+per[7];
   s[3]:=per[2]+per[5]+per[8];
   s[4]:=per[3]+per[6]+per[9];
   s[5]:=per[3]+per[5]+per[7];
   s[6]:=per[1]+per[2]+per[3];
   s[7]:=per[4]+per[5]+per[6];
   s[8]:=per[7]+per[8]+per[9];
   for i:=1 to 8 do
   for j:=1 to 8 do
   if s[i]<>s[j] then nep:=true;
   if nep=false then begin
    writeln;
    t:=t+1;
    for i:=1 to 9 do begin
     write(per[i]);
    end;
   end;
  end;
 for c:=1 to 9 do begin
  if not incl[c] then begin
   per[p]:=a[c];
   incl[c]:=true;
   perest(p+1);
   per[p]:=0;
   incl[c]:=false;
  end;
 end;
end;
begin
 clrscr;
 for i:=1 to 9 do begin a[i]:=i; write(a[i],' '); end;
perest(1);
writeln;
writeln(t);
readkey;
end.

автор: Tayfun

Поделиться:

Похожие статьи: