Trong bài toán này, chúng ta được cung cấp một chuỗi và chúng ta phải chia nó thành các chuỗi con và in chúng trong dấu ngoặc đơn.
Hãy lấy một vài ví dụ để hiểu rõ vấn đề hơn,
Input : wxyz Output : (w) (x) (y) (z) (w) (x) (yz) (w) (xy) (z) (w) (xyz) (wx) (y) (z) (wx) (yz) (wxy) (z) (wxyz)
Giải thích - Chúng ta sẽ ngắt chuỗi thành tất cả các chuỗi con có thể. Và đặt mỗi chuỗi con bằng dấu ngoặc.
Bây giờ, vì chúng tôi đã hiểu vấn đề, hãy tạo giải pháp cho vấn đề.
Ở đây, chúng ta sẽ sử dụng đệ quy để giải quyết vấn đề. Chúng ta sẽ sử dụng hai tham số, một sẽ là ký tự tiếp theo của chuỗi và một là chuỗi xuất. Chuỗi con chưa được xử lý sẽ từ từ được xử lý ở mỗi lần lặp. Và các tập hợp con được tạo.
Ví dụ
Chương trình giải quyết vấn đề -
#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; }
Đầu ra
The substring are : (w)(x)(y)(z) (w)(x)(yz) (w)(xy)(z) (w)(xyz) (wx)(y)(z) (wx)(yz) (wxy)(z) (wxyz)