CÀI ĐẶT THUẬT TOÁN VECTOR ĐỒ THỊ BẰNGCHƯƠ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
Trang 1CÀ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 =(d1,d2,…dn) 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
Trang 2Chươ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
Trang 3writeln(' 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