यहां एक C++ प्रोग्राम है जो दिए गए पूर्णांक के सभी यूनिक फैक्टराइज़ेशन प्राप्त करता है जैसे कि एक पार्टीशन का जोड़ एक पूर्णांक का परिणाम देता है। इस प्रोग्राम में, एक पॉजिटिव पूर्णांक n दिया गया है, और हम n को पॉजिटिव पूर्णांकों के योग के रूप में प्रस्तुत करने के सभी संभावित यूनिक तरीके उत्पन्न करेंगे।
एल्गोरिदम
Begin function displayAllUniqueParts(int m): 1) पार्टीशन में अंतिम तत्व k का इंडेक्स 0 सेट करें 2) पहली पार्टीशन को संख्या के रूप में इनिशियलाइज़ करें, p[k]=m 3) एक व्हाइल लूप बनाएं जो पहले वर्तमान पार्टीशन को प्रिंट करता है, फिर अगली पार्टीजन उत्पन्न करता है। लूप तब रुकता है जब वर्तमान पार्टीशन में सभी 1 होते हैं। 4) displayArray(p, k + 1) के रूप में वर्तमान पार्टीशन प्रदर्शित करें 5) अगली पार्टीशन उत्पन्न करें: 6) val = 0 इनिशियलाइज़ करें। p[] में सबसे दाएं नॉन-वन मान खोजें। साथ ही, val को अपडेट करें ताकि हम जान सकें कि कितना मान समायोजित किया जा सकता है। यदि k < 0, सभी मान 1 हैं इसलिए कोई और पार्टीशन नहीं हैं ऊपर पाए गए p[k] को घटाएं और val को समायोजित करें। 7) यदि val अधिक है, तो सॉर्टेड ऑर्डर का उल्लंघन होता है। val को p[k] के आकार के विभिन्न मानों में विभाजित करें और इन मानों को p[k] के बाद विभिन्न स्थितियों पर कॉपी करें। val को अगली स्थिति पर कॉपी करें और पोजीशन इन्क्रीमेंट करें। End
उदाहरण
#include<iostream> using namespace std; void displayArray(int p[], int m) //ऐरे प्रिंट करने के लिए { for (int i = 0; i < m; i++) cout << p[i] << " "; cout << endl; } void displayAllUniqueParts(int m) { int p[m]; int k = 0; p[k] = m; while (true) { displayArray(p, k + 1); int val = 0; //val इनिशियलाइज़ करें while (k >= 0 && p[k] == 1) { val += p[k]; //val अपडेट करें k--; } if (k < 0) return; p[k]--; val++; while (val > p[k]) //यदि val अधिक है { p[k + 1] = p[k]; val = val - p[k]; k++; } p[k + 1] = val; k++; } } int main() { cout << "Display All Unique Partitions of 3\n"; displayAllUniqueParts(3); cout << "\nDisplay All Unique Partitions of 4\n"; displayAllUniqueParts(4); cout << "\nDisplay All Unique Partitions of 5\n"; displayAllUniqueParts(5); return 0; }
आउटपुट
Display All Unique Partitions of 3 3 2 1 1 1 1 Display All Unique Partitions of 4 4 3 1 2 2 2 1 1 1 1 1 1 Display All Unique Partitions of 5 5 4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1