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ẻ:
Từ khóa » Thuật Toán Liệt Kê Hoán Vị Trong Pascal
-
Thuật Toán Liệt Kê Hoán Vị - Programming - Dạy Nhau Học
-
Giải Thuật Liệt Kê Hoán Vị - Liệt Kê Hoán Vị Tiếp Theo Theo Thứ Tự Từ điển
-
Tổ Hợp Trong Pascal - Sách Giải
-
THUẬT TOÁN HOÁN VỊ - Tài Liệu Text - 123doc
-
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ị - Cách Học
-
Liệt Kê Các Hoán Vị Của Các Số Từ 1 Tới N - Học Tin Cùng Thủ Khoa
-
[PDF] BÀI 3: BÀI TOÁN LIỆT KÊ TỔ HỢP - Topica
-
Cách Tạo Hoán Vị N Phần Tử Bằng Thuật Toán Quay Lui - YouTube
-
Giai Thuat Va Lap Trinh - SlideShare
-
Giải Thuật Và Lập Trình: §2. Phương Pháp Sinh (GENERATION)
-
Hoán Vị Của 1 đến N. Code đệ Quy Quay Lui Pascal. - Dungnv
-
Hoan Vi [Archive] - Diễn Đàn Tin Học