Trong bài toán này, chúng ta được cung cấp một tập hợp các ký tự và một số nguyên dương k và chúng ta phải in ra tất cả các chuỗi có độ dài k có thể được tạo ra bằng cách sử dụng các ký tự của tập hợp đó.
Hãy lấy một ví dụ để hiểu rõ vấn đề hơn -
Input: set = {‘x’, ‘y’, ‘z’} , k = 2 Output: xy, xz, yz
Để giải quyết vấn đề này, chúng ta phải tìm tất cả các trình tự có thể được tạo ra. Đối với tập hợp kích thước n, tổng số chuỗi lengthk có thể có sẽ là n k (n ^ k). Chúng tôi sẽ sử dụng một lệnh gọi đệ quy để tạo chuỗi sẽ bắt đầu từ chuỗi trống và thêm từng ký tự vào đó.
Ví dụ
#include <bits/stdc++.h> using namespace std; void printKLengthString(char set[], string sequence, int n, int k) { if (k == 0){ cout<<sequence<<"\t"; return; } for (int i = 0; i < n; i++){ string newSequence; newSequence=sequence+set[i]; printKLengthString(set, newSequence, n, k - 1); } } int main() { char set[] = {'a', 'b'}; int n = 2; int k = 3; printKLengthString(set, "", n, k); }
Đầu ra
aaa aab aba abb baa bab bba bbb