1
11thanhkhoeo
Chắc suất Đại học top - Giữ chỗ ngay!! ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.
Mã:
var a: array[1..3, 1..3] of integer;
var x: array[1..9] of boolean;
var sumrow, sumcol: array[1..3] of integer;
dem:integer;
function checksum:boolean;
var i :byte;
begin checksum :=true;
for i:= 1 to 3 do
begin
if sumrow[i]<>15 then checksum:= false;
if sumcol[i]<>15 then checksum:= false;
end;
end;
procedure writeout;
var i,j:byte;
begin
dem:=dem+1;
writeln;
write(dem);
writeln;
for i := 1 to 3 do
begin
for j := 1 to 3 do
write(a[i,j]:3);
writeln;
end;
end;
procedure DeQuy(row, col: integer);
var i: integer;
begin
if (col > 3) then
begin
col := 1;
row := row + 1;
end;
if (row > 3) then
begin
if CheckSum then WriteOut;
exit;
end;
for i := 1 to 9 do
begin
if not x[i] then begin
x[i] := true;
a[row, col] := i;
sumrow[row] := sumrow[row] + i;
sumcol[col] := sumcol[col] + i;
if (sumrow[row] <= 15) and (sumcol[col] <= 15) then {// dây là c?n }
DeQuy(row, col + 1);
x[i] := false;
sumrow[row] := sumrow[row] - i;
sumcol[col] := sumcol[col] - i;
end;
end;
end;
Begin
fillchar(x, sizeof(x), false);
fillchar(sumrow, sizeof(sumrow), 0);
fillchar(sumcol, sizeof(sumcol), 0);
DeQuy(1, 1);
readln;
End.