Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์สตริงที่มีความยาว k ที่เป็นไปได้ทั้งหมดที่สามารถสร้างได้จากชุดอักขระ n ตัวใน C++


ในปัญหานี้ เราได้รับชุดของอักขระและจำนวนเต็มบวก 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