Thứ Tư, 25 tháng 12, 2013

Sinh ngẫu nhiên mảng đối xứng



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