Cài đặt thuật toán tìm chu trình Euler bằng Pascal

4 3.5K 45
Cài đặt thuật toán tìm chu trình Euler bằng Pascal

Đang tải... (xem toàn văn)

Thông tin tài liệu

CÀI ĐẶT THUẬT TOÁN TÌM CHU TRÌNH EURLER BẰNG CHƯƠNG TRÌNH PASCAL Chu trình Euler. Chương trình tìm chu trình Euler. Dữ liệu được lấy từ tệp EULER.INP là ma trận : n m x 1 y 1 x 2 y 2 … … x m y m Trong đó, n số đỉnh, m là số cạnh Sau khi lấy dữ liệu, chương trình sẽ xác định các có tồn tại chu trình Euler hay không, nếu có thì tìm chu trình và lưu vào tệp EULER.OUT có cấu trúc: Dòng đầu : “NOSOLUTION” nếu không tồn tại chu trình Euler Dòng đầu : “YES” nếu tồn tại chu trình Euler Dòng 2: z 1 ,z 2 ,…,z n ,z 1. Trong đó z 1 ,z 2 ,…,z n ,z 1 là chu trình. Chương trình: (EULER.PAS) program euler; const max=30; type mang=array[1 max] of integer; var a:array[1 max,1 max] of integer; c,tim:mang; n,m,spt,k:integer; f:text; procedure input; var i,x,y:integer; begin assign(f,'Euler.inp');reset(f); readln(f,n,m); for i:=1 to m do begin readln(f,x,y); a[x,y]:=1; a[y,x]:=1; end; close(f); end; function kt:boolean; var i,j,s,d:integer; begin d:=0; for i:=1 to n do begin s:=0; for j:=1 to n do if(i<>j) then s:=s+a[i,j]; if s mod 2<>0 then inc(d); end; if d=0 then kt:=true else kt:=false; end; procedure timp(var tim:mang;var spt:integer); var x,u,v:integer; begin spt:=0; c[1]:=1;u:=1; repeat v:=c[u]; x:=1; while(x<=n) and (a[v,x]=0) do inc(x); if a[v,x] <>0 then begin inc(u); c[u]:=x; a[v,x]:=0; a[x,v]:=0; end else begin inc(spt); tim[spt]:=c[u]; dec(u); end; until u=0; end; BEGIN input; assign(f,'Euler.out');rewrite(f); if kt then begin timp(tim,spt); writeln(f,'YES'); for k:=spt downto 2 do write(f,tim[k],'-->'); write(f,tim[1]); end else write(f,'NO'); close(f); END. File vào ví dụ: (EULER.INP) 4 5 1 2 3 4 File ra tương ứng: (EULER.OUT) YES 1-->1-->2-->3-->4-->1 . CÀI ĐẶT THUẬT TOÁN TÌM CHU TRÌNH EURLER BẰNG CHƯƠNG TRÌNH PASCAL Chu trình Euler. Chương trình tìm chu trình Euler. Dữ liệu được lấy từ tệp EULER. INP. tại chu trình Euler Dòng đầu : “YES” nếu tồn tại chu trình Euler Dòng 2: z 1 ,z 2 ,…,z n ,z 1. Trong đó z 1 ,z 2 ,…,z n ,z 1 là chu trình. Chương trình:

Ngày đăng: 30/06/2013, 01:26

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan