Liệt Kê Các Hoán Vị Từ 1 đến N
Có thể bạn quan tâm
Đề bài: Hãy liệt kê các hoán vị từ 1 đến N theo thứ tự từ điển
Ví dụ: Nhập N=3 thì các hoán vị: 123 132 231 213 312 321
Ý tưởng:
Bước 1: Ta khởi tạo cấu hình ban đầu 123. in cầu hình ra.
Bước 2: Ta tìm dãy con giảm dần bằng cách duyệt từ cuối dãy lên và gặp A[i] nào thỏa A[i] > A[i-1] thì ngừng bước 2.
Bước 3: Ta đổi giá trị phần từ nhỏ nhất trong dãy con giảm dần và phần tử sát cuối với dãy con. Bằng cách ta duyệt từ cuối dãy gặp A[k] nào nhỏ hơn A[i-1] thì ta hoán đổi.
Bước 4: Ta sắp xếp dãy con vừa hoán đổi thành tăng dần. In cấu hình hiện tại ra.
Bước 5: Lặp lại các bước 2,3,4 trên cho đến khi i=1 thì dừng lại.
Chương trình:
program lietkehoanvi; type mang=Array[1..100] of integer; label L1; var A,B:mang; sptA,sptB:integer; i,j,n:integer; co:boolean; Procedure hoanvi(var a,b:integer); Var tam:integer; Begin tam:=a; a:=b; b:=tam; End; Procedure sapxeptd(var A:mang; spt:integer; vt:integer); var i,j:integer; Begin for i:=vt to n-1 do for j:=i+1 to n do if A[i] > A[j] then Begin hoanvi(A[i],A[j]); End; End; Procedure khoitao(var A:mang; spt:integer); var i:integer; Begin for i:=1 to spt do A[i]:=i; End; Procedure inCauhinh(A:mang; spt:integer); Begin for i:=1 to spt do write(A[i],' '); writeln; End; Begin write('Nhap so : '); Readln(n); khoitao(A,n); inCauhinh(A,n); while true do Begin for i:=n downto 1 do Begin if i=1 then goto L1; if A[i]>A[i-1] then break; End; for j:=n downto i do if A[j]>A[i-1] then Begin hoanvi(A[j],A[i-1]); sapxeptd(A,n,i); incauhinh(A,n); break; End; End; L1: Write('Ket thuc '); Readln; End.Tải code tại đây: Click here
Chia sẻ:
- X
Từ khóa » Hoán Vị Bằng đệ Quy Pascal
-
Hoán Vị Của 1 đến N. Code đệ Quy Quay Lui Pascal. - Dungnv
-
[Tin Học Pascal]…đệ Quy Hoán Vị - YouTube
-
Đệ Quy Quay Lui Trong Pascal | Bài Toán Hoán Vị Trong Pascal
-
Tổ Hợp Trong Pascal - Sách Giải
-
Hoan Vi [Archive] - Diễn Đàn Tin Học
-
THUẬT TOÁN ĐỆ QUY MINH HỌA BẰNG FREE PASCAL - Tài Liệu Text
-
Pascal: In Ra Các Hoán Vị - Góc Tin Học
-
Liệt Kê Các Hoán Vị Tổ Hợp Sử Dụng Code C++ - Lập Trình Không Khó
-
Thuật Toán Liệt Kê Hoán Vị - Programming - Dạy Nhau Học
-
Giai Thuat Va Lap Trinh - Slideshare
-
Bài Toán đệ Quy - .vn
-
[PDF] BÀI 3: BÀI TOÁN LIỆT KÊ TỔ HỢP - Topica