একটি স্ট্রিংয়ের ক্যারেক্টারগুলো সাজিয়ে কতগুলো ভিন্ন পারমুটেশন বানানো যায়, সেটি বের করার প্রোগ্রাম। যদি সব ক্যারেক্টার ইউনিক হয়, তবে পারমুটেশন সংখ্যা = n!। কিন্তু ডুপ্লিকেট ক্যারেক্টার থাকলে fórmula: n! / (freq₁! × freq₂! × ...)।
উদাহরণ কোড
#include <iostream>
#include <string>
using namespace std;
long fact(long n) {
if (n == 0 || n == 1) return 1;
return n * fact(n - 1);
}
int countPermutation(string str) {
int freq[26] = {0};
for (char ch : str)
freq[ch - 'a']++;
int res = fact(str.size());
for (int i = 0; i < 26; i++)
if (freq[i] > 1)
res /= fact(freq[i]);
return res;
}
int main() {
string n;
cout << "Enter a string: ";
cin >> n;
cout << "Number of permutations: " << countPermutation(n);
return 0;
}
আউটপুট
Enter a string: abbc Number of permutations: 12
ব্যাখ্যা: "abbc" -এ ৪ ক্যারেক্টার, 그중 'b' দুবার। মোট পারমুটেশন = 4! / 2! = 24/2 = 12।
দ্রষ্টব্য: বড় স্ট্রিংয়ের জন্য ফ্যাক্টরিয়াল ওভারফ্লো হতে পারে। long long বা বড় সংখ্যা লাইব্রেরি ব্যবহার করা উচিত।