Tải bản đầy đủ (.doc) (3 trang)

Cài đặt thuật toán Vector đồ thị bằng Pascal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (68.02 KB, 3 trang )

CÀI ĐẶT THUẬT TOÁN VECTOR ĐỒ THỊ BẰNG
CHƯƠNG TRÌNH PASCAL
Vecto đồ thị.
Chương trình kiểm tra một vector có phải là một vector
đồ thị hay không.
Dữ liệu được lấy từ tệp VECTO.INP, gồm các vector
dạng v =(d
1
,d
2
,…d
n
) gồm n số nguyên giảm dần, được viết
theo dòng.
Chương trình sẽ kiểm tra vector v và kết quả được lưu
vào tệp VECTO.OUT. Nếu v là vector đồ thị thì kết quả là
YES, ngược lại là NO.
Chương trình: (VECTOR.PAS)
Program vecto;
type mang = array[1..20] of integer;
var f,g:text;
v:mang; n:integer;
procedure giamdan(var u:mang;m:integer);
var i,j,t:integer;
begin
for i:=1 to m-1 do
for j:=i+1 to m do
if u[i]<u[j] then
begin t:=u[i];
u[i]:=u[j];
u[j]:=t;


end;
end;
function kiemtra(v:mang;m:integer):boolean;
var i:integer; u:mang;kt,bietroi:boolean;
begin
u:=v;
giamdan(u,m); kt:=false; bietroi:=true;
for i:=1 to m do
if (u[i]>m-1) or (u[i]<0) then kt:=true
else if u[i]<>0 then bietroi:=false;
if kt then kiemtra:=false
else if bietroi then kiemtra:=true
else begin
for i:=1 to u[1] do u[i]:=u[i+1]-1;
for i:=u[1]+1 to m-1 do u[i]:=u[i+1];
giamdan(u,m-1);
kiemtra:=kiemtra(u,m-1);
end;
end;
Begin
writeln(' ct xac dinh vec to do thi');
assign(f,'vecto.inp'); reset(f);
assign(g,'vecto.out'); rewrite(g);
while not eof(f) do
begin
n:=0;
while not eoln(f) do
begin inc(n); read(f,v[n]);
write(v[n]:3);
end;

writeln;
if kiemtra(v,n) then writeln(g,'YES')
else writeln(g,'NO');
readln(f);
end;
close(f); close(g);
End.
File vào ví dụ: (VECTO.INP)
2 2 1
3 3 2 2 2
5 4 3 3 3 2
File ra tương ứng: (VECTO.OUT)
NO
YES
YES

×