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

พิมพ์สตริงที่เป็นไปได้ทั้งหมดที่สามารถทำได้โดยวางช่องว่างใน C++


ในปัญหานี้ เราได้รับสตริงและต้องพิมพ์สตริงทั้งหมดที่สามารถสร้างโดยใช้สตริงนี้โดยวางช่องว่างระหว่างอักขระของสตริง

มาดูตัวอย่างเพื่อทำความเข้าใจหัวข้อกันดีกว่า −

Input: string = ‘XYZ’
Output: XYZ, XY Z, X YZ, X Y Z

เพื่อแก้ปัญหานี้ เราจะต้องค้นหาวิธีที่เป็นไปได้ทั้งหมดที่เราสามารถใส่ช่องว่างในสตริงได้ สำหรับสิ่งนี้เราจะใช้การเรียกซ้ำ ในส่วนนี้ เราจะใส่ช่องว่างทีละหนึ่งและสร้างสตริงใหม่

ตัวอย่าง

#include <iostream>
#include <cstring>
using namespace std;
void printPattern(char str[], char buff[], int i, int j, int n){
   if (i==n){
      buff[j] = '\0';
      cout << buff << endl;
      return;
   }
   buff[j] = str[i];
   printPattern(str, buff, i+1, j+1, n);
   buff[j] = ' ';
   buff[j+1] = str[i];
   printPattern(str, buff, i+1, j+2, n);
}
int main() {
   char *str = "XYZ";
   int n = strlen(str);
   char buf[2*n];
   buf[0] = str[0];
   cout<<"The string generated using space are :\n";
   printPattern(str, buf, 1, 1, n);
   return 0;
}

ผลลัพธ์

สตริงที่สร้างขึ้นโดยใช้ช่องว่างคือ −

XYZ
XY Z
X YZ
X Y Z