Alexander Bogomolny 的 C++ 中無序排列演算法
在此,我們給出一個數字 N。我們的任務是使用Alexander Bogomolny 的無序排列演算法查詢 N 的無序排列。
讓我們先討論排列,
排列是集合中專案可以唯一排列的方式的數量稱為排列。
示例 − {4,9,2} 的排列將是 {4,9,2}、{4,2,9}、{9,4,2}、{9,2,4}、{2,4,9} 和 {2,9,4}。
排列已用於定義計算機網路中的交換網路、並行處理,還用於各種加密演算法中。
Alexander Bogomolny 的無序排列演算法
此演算法計算前 N 個自然數的所有可能排列。給定數字 N,排列將從 1 到 N 計算。
我們舉一個例子來理解這個問題,
輸入
N = 3
輸出
1,2,3 ; 1,3,2 ; 2,1,3 ; 2,3,1 ; 3,1,2 ; 3,2,1
演算法
1. Build a function with an array, number N, and an integer k as parameters 2. Initialize the level, as level increases permute the rest of the values 3. When the recursion condition is reached all its values are printed.
示例
顯示我們演算法實現的程式 −
#include <iostream>
using namespace std;
int level = -1;
void AlexanderBogomolyn(int permutations[], int N, int k) {
level = level + 1;
permutations[k] = level;
if (level == N) {
for (int i = 0; i < N; i++)
cout<<permutations[i]<<"\t";
cout<<endl;
}
else{
for (int i = 0; i < N; i++)
if (permutations[i] == 0)
AlexanderBogomolyn(permutations, N, i);
}
level = level - 1;
permutations[k] = 0;
}
int main(){
int N = 4;
int permutations[N] = { 0 };
cout<<"All permutations are :\n";
AlexanderBogomolyn(permutations, N, 0);
return 0;
}輸出
All permutations are : 1 2 3 4 1 2 4 3 1 3 2 4 1 4 2 3 1 3 4 2 1 4 3 2 2 1 3 4 2 1 4 3 3 1 2 4 4 1 2 3 3 1 4 2 4 1 3 2 2 3 1 4 2 4 1 3 3 2 1 4 4 2 1 3 3 4 1 2 4 3 1 2 2 3 4 1 2 4 3 1 3 2 4 1 4 2 3 1 3 4 2 1 4 3 2 1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP