একটি স্ট্রিং দেওয়া আছে। এটিকে সব সম্ভাব উপস্ট্রিং-এ ভাগ করে প্রতিটি উপস্ট্রিংকে ব্র্যাকেটের ভিতরে রাখতে হবে।
উদাহরণ: ইনপুট: "wxyz"
আউটপুট:
(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)