इस समस्या में, हमें एक स्ट्रिंग दी गई है और हमें इसे उपस्ट्रिंग में तोड़ना है और उन्हें ब्रैकेट में संलग्न करके प्रिंट करना है।
आइए कुछ उदाहरण लेकर इस समस्या को बेहतर ढंग से समझते हैं,
Input : wxyz Output : (w) (x) (y) (z) (w) (x) (yz) (w) (xy) (z) (w) (xyz) (wx) (y) (z) (wx) (yz) (wxy) (z) (wxyz)
व्याख्या - हम स्ट्रिंग को सभी संभावित उपस्ट्रिंग में तोड़ेंगे। और प्रत्येक उपस्ट्रिंग को ब्रैकेट से संलग्न करेंगे।
अब, चूंकि हमने समस्या को समझ लिया है, आइए इस समस्या का समाधान बनाते हैं।
यहां, हम इस समस्या को हल करने के लिए पुनरावृत्ति का उपयोग करेंगे। हम दो पैरामीटर का उपयोग करेंगे, एक स्ट्रिंग का अगला वर्ण होगा और दूसरा आउटपुट स्ट्रिंग। असंसाधित उपस्ट्रिंग प्रत्येक पुनरावृत्ति में धीरे-धीरे संसाधित होगी। और उपसमुच्चय बनाए जाएंगे।
उदाहरण
समस्या को हल करने का प्रोग्राम -
#include <iostream> using namespace std; void substring(string str, int index, string out){ if (index == str.length()) cout << out << endl; for (int i = index; i < str.length(); i++) substring(str, i + 1, out + "(" + str.substr(index, i+1-index) + ")" ); } int main(){ string str = "wxyz"; cout<<"The substring are :"<<endl; substring(str, 0, ""); return 0; } आउटपुट
The substring are : (w)(x)(y)(z) (w)(x)(yz) (w)(xy)(z) (w)(xyz) (wx)(y)(z) (wx)(yz) (wxy)(z) (wxyz)