CÀI ĐẶTTHUẬTTOÁ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 . 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 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]