Computer >> Máy Tính >  >> Lập trình >> C ++

Thuật toán hoán vị không có thứ tự của Alexander Bogomolny trong C ++


Ở đây, chúng tôi được cung cấp một số N. Nhiệm vụ của chúng tôi là tìm hoán vị nhỏ hơn của N bằng cách sử dụng Alexander Bogomolny’s UnOrdered Permutation Algorithm.

Trước tiên, hãy thảo luận về hoán vị,

Một hoán vị là số cách một mục trong một tập hợp có thể được sắp xếp theo thứ tự duy nhất được gọi là một hoán vị.

Ví dụ - Hoán vị của {4,9,2} sẽ là {4,9,2}, {4,2,9}, {9,4,2}, {9,2,4}, {2,4,9 } và {2,9,4}.

Hoán vị đã được sử dụng trong việc xác định mạng chuyển mạch trong mạng máy tính, xử lý song song và cũng được sử dụng trong nhiều thuật toán mật mã.

Thuật toán hoán vị không có thứ tự của Alexander Bogomolny

Thuật toán này tính tất cả các hoán vị có thể có của N số tự nhiên đầu tiên. Cho một số N, các hoán vị được tính từ 1 đến N.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

 N =3 

Đầu ra

 1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2; 3,2,1 

Thuật toán

 1. Xây dựng một hàm với một mảng, số N và một số nguyên k asparameters2. Khởi tạo cấp độ, khi cấp độ tăng lên sẽ hoán vị phần còn lại của các giá trị3. Khi điều kiện đệ quy đạt được, tất cả các giá trị của nó sẽ được in ra. 

Ví dụ

Chương trình hiển thị việc triển khai thuật toán của chúng tôi -

 #include  using namespace std; int level =-1; void AlexanderBogomolyn (int hoán vị [], int N, int k) {level =level + 1; hoán vị [k] =cấp; if (cấp ==N) {for (int i =0; i  

Đầu ra

Tất cả các hoán vị là:1 2 3 41 2 4 31 3 2 41 4 2 31 3 4 21 4 3 22 1 3 42 1 4 33 1 2 44 1 2 33 1 4 24 1 3 22 3 1 42 4 1 33 2 1 44 2 1 33 4 1 24 3 1 22 3 4 12 4 3 13 2 4 14 2 3 13 4 2 14 3 2 1