ในปัญหานี้ เราได้รับชุดของอักขระและจำนวนเต็มบวก k และเราต้องพิมพ์สตริงที่มีความยาว k ที่เป็นไปได้ทั้งหมดที่สามารถสร้างได้โดยใช้อักขระของชุด
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากันดีกว่า −
Input: set = {‘x’, ‘y’, ‘z’} , k = 2 Output: xy, xz, yz
เพื่อแก้ปัญหานี้ เราต้องหาลำดับที่เป็นไปได้ทั้งหมดที่สามารถสร้างได้ สำหรับชุดของขนาด n จำนวนทั้งหมดของสตริง lengthk ที่เป็นไปได้จะเป็น n k (n^k). เราจะใช้การเรียกซ้ำเพื่อสร้างสตริงซึ่งจะเริ่มจากสตริงว่างและเพิ่มอักขระทีละอักขระลงไป
ตัวอย่าง
#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); }
ผลลัพธ์
aaa aab aba abb baa bab bba bbb