এটি ১ থেকে N এলিমেন্টের জন্য অ্যালেকজান্ডার বগোমোলনির আনঅর্ডারড পারমুটেশন অ্যালগরিদম বাস্তবায়ন করার একটি C++ প্রোগ্রাম।
অ্যালগরিদম
শুরু
ফাংশন AlexanderBogomolny() অ্যালগরিদম বাস্তবায়ন করতে
আর্গুমেন্ট:
Val[] = একটি অ্যারে
N = ইনপুট নেওয়া এলিমেন্ট সংখ্যা।
K = লেভেল
ফাংশনের বডি:
l = -1 ইনিশিয়ালাইজ করুন
l = l+1
Val[k] = l
যদি (l == N)
ফাংশন display(Val, N) কল করুন
অন্যথায়
i = 0 থেকে N-1 পর্যন্ত
যদি (Val[i] == 0)
AlexanderBogomolny(Val, N, i) কল করুন
l = l - 1
Val[k] = 0
শেষ
উদাহরণ
#include <iostream>
#include <iomanip>
using namespace std;
void display(const int* n, const int size) // পারমুটেশন ডিসপ্লে
{
int i;
if (n != 0) {
for (i = 0; i < size; i++) {
cout << setw(4) << n[i];
}
cout << "\n";
}
}
void AlexanderBogomolny(int* Val, int N, int k) {
static int l = -1;
int i;
// শুরুতে, লেভেল ০ অ্যাসাইন করুন।
l = l + 1;
Val[k] = l;
if (l == N)
display(Val, N);
else
for (i = 0; i < N; i++)
// ভ্যালু ০ হলে অ্যারেতে ভ্যালু অ্যাসাইন করুন।
if (Val[i] == 0)
AlexanderBogomolny(Val, N, i);
// সেই লেভেলের সব সম্ভাব্য পারমুটেশন হওয়ার পর লেভেল ডিক্রিমেন্ট করুন।
l = l - 1;
Val[k] = 0;
}
int main() {
int i, N, cnt = 1;
cout << "Enter the value to permute first N natural numbers: ";
cin >> N;
int Val[N];
for (i = 0; i < N; i++) {
Val[i] = 0;
cnt *= (i+1);
}
cout << "\nThe number of permutations possible is: " << cnt;
cout << "\n\nPermutation using Alexander Bogomolyn's Algorithms \n";
AlexanderBogomolny(Val, N, 0);
return 0;
}
আউটপুট
Enter the value to permute first N natural numbers: 5 The number of permutations possible is: 120 Permutation using Alexander Bogomolyn's Algorithms 1 2 3 4 5 1 2 3 5 4 ... (বিশাল আউটপুট সংক্ষিপ্ত)