Sinh ngẫu nhiên mảng đối xứng - gia sư tin học
Sinh ngẫu nhiên các giá trị để ghi vào một mảng hai chiều a[1..n, 1..n] sao cho các phần tử đối xứng nhau qua đường chéo chính, tức là
a[i, j] = a[j, i], 1 ≤ i, j ≤ N.
Thuật toán
1. Sinh ngẫu nhiên các phần tử
trên đường chéo chính a[i,i],i=1..n.
2. Sinh ngẫu nhiên các phần tử nằm phía
trên đường chéo chính a[i,j], i=1..n, j=i+1..n rồi lấy đối xứng: a[j,i]:= a[i,j].
Độ phức tạp: n2.
(* Pascal *)
program
GenMatSym;
uses crt;
const MN =
100;
var a =
array[1..MN,1..MN] of integer;
procedure
Gen(n: integer);
var i, j:
integer;
begin
randomize;
for I := 1 to
n do
begin
a[i,i] := random(n);
for j := i+1
to n do
begin
a[i,j]:=random(n); a[j,i]:=a[i,j];
end;
end;
end;
procedure
Xem(n: integer);
var i, j:
integer;
begin
writeln;
for i:= 1 to n
do
begin
writeln;
for j:= 1 to n
do write(a[i,j]:4);
end;
end;
BEGIN
Gen(20); Xem(20); readln;
END.
Không có nhận xét nào:
Đăng nhận xét