ধরুন আমাদের n উপাদান সহ একটি স্ট্রিং আছে (n <10)। আমাদেরকে স্বরবর্ণ এবং ব্যঞ্জনবর্ণের আপেক্ষিক অবস্থান পরিবর্তন না করে স্ট্রিং সাজানো যায় এমন উপায় খুঁজে বের করতে হবে।
পদ্ধতি সহজ. আমাদের প্রদত্ত স্ট্রিংটিতে স্বরবর্ণ এবং ব্যঞ্জনবর্ণের সংখ্যা গণনা করতে হবে, তারপরে আমাদের খুঁজে বের করতে হবে যে আমরা কতগুলি উপায়ে স্বরবর্ণগুলিকে সাজাতে পারি, তারপরে কেবলমাত্র ব্যঞ্জনবর্ণকে সাজানোর উপায়গুলি খুঁজে বের করতে হবে, তারপরে এই দুটিকে গুণ করে ফলাফল পেতে হবে। মোট উপায়।
অ্যালগরিদম
ArangeWayCount(str)
Begin define an array ‘freq’ to store frequency. count and place frequency of each characters in freq array. such that freq[‘0’] will hold frequency of letter ‘a’, freq[1] will hold frequency of ‘b’ and so on. v := number of vowels, and c := number of consonants in str vArrange := factorial of v for each vowel v in [a, e, i, o, u], do vArrange := vArrange / factorial of the frequency of v done cArrange := factorial of c for each consonant con, do cArrange := cArrange / factorial of the frequency of con done return vArrange * cArrange End
উদাহরণ
#include <iostream> using namespace std; long long factorial(int n){ if(n == 0 || n == 1) return 1; return n*factorial(n-1); } long long arrangeWayCount(string str){ long long freq[27] = {0}; //fill frequency array to 0 int v = 0, c = 0; for (int i = 0; i < str.length(); i++) { freq[str[i] - 'a']++; if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') { v++; }else c++; } long long arrangeVowel; arrangeVowel = factorial(v); arrangeVowel /= factorial(freq[0]); // vowel a arrangeVowel /= factorial(freq[4]); // vowel e arrangeVowel /= factorial(freq[8]); // vowel i arrangeVowel /= factorial(freq[14]); // vowel o arrangeVowel /= factorial(freq[20]); // vowel u long long arrangeConsonant; arrangeConsonant = factorial(c); for (int i = 0; i < 26; i++) { if (i != 0 && i != 4 && i != 8 && i != 14 && i != 20) arrangeConsonant /= factorial(freq[i]); //frequency of all characters except vowels } long long total = arrangeVowel * arrangeConsonant; return total; } main() { string str = "computer"; long long ans = arrangeWayCount(str); cout << "Possible ways to arrange: " << ans << endl; }
আউটপুট
Possible ways to arrange: 720