इस समस्या में, हमें एक स्ट्रिंग str दी गई है। हमारा कार्य इस स्ट्रिंग के तत्वों के पावर सेट को लेक्सिकोग्राफिकल क्रम में प्रिंट करना है।
पावर सेट - किसी सेट का पावर सेट उस सेट के सभी सबसेट्स का सेट होता है। इसे P(S) से दर्शाया जाता है जहां S सेट है।
उदाहरण -
S = {1, 2, 3} ; p(S) = {{}, {1}, {1, 2}, {1, 3}, {2}, {2, 3}, {3}, {1,2,3}}इस समस्या में, हम स्ट्रिंग को एक सेट के रूप में मानेंगे। इसलिए, इसके कैरेक्टर्स सेट के तत्व होंगे।
आइए एक उदाहरण से समझते हैं:
इनपुट - str = "xyz"
आउटपुट - x xy xyz xz y yz z
इस समस्या को हल करने के लिए, हमें सरणी को सॉर्ट करना होगा ताकि लेक्सिकोग्राफिकल क्रम प्राप्त हो सके। फिर हम स्ट्रिंग के एक तत्व को फिक्स करेंगे और शेष तत्वों के लिए पुनरावर्ती रूप से कॉल करेंगे जो सभी सबस्ट्रिंग उत्पन्न करेगा। और अगला क्रमपरिवर्तन प्राप्त करने के लिए पहले फिक्स किए गए तत्व को हटा देंगे।
उदाहरण
हमारे समाधान के कार्यान्वयन को दर्शाने वाला प्रोग्राम,
#include <bits/stdc++.h> using namespace std; void printAllSubsets(string str, int n, int index = -1, string subset = "") { if (index == n) return; cout<<subset<<"\n"; for (int i = index + 1; i < n; i++) { subset+= str[i]; printAllSubsets(str, n, i, subset); subset = subset.erase(subset.size() - 1); } return; } void GeneratePowerSet(string str) { sort(str.begin(), str.end()); printAllSubsets(str, str.size()); } int main() { string str = "xyz"; cout<<"स्ट्रिंग '"<<str<<"' का पावर सेट है :\n"; GeneratePowerSet(str); return 0; }आउटपुट
स्ट्रिंग 'xyz' का पावर सेट है: x xy xyz xz y yz z