>백엔드 개발 >C++ >문자열이 주어지면 구성 가능한 모든 길이의 문자열을 나열하십시오.

문자열이 주어지면 구성 가능한 모든 길이의 문자열을 나열하십시오.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB앞으로
2023-08-27 20:05:06898검색

문자열이 주어지면 구성 가능한 모든 길이의 문자열을 나열하십시오.

이 섹션에서는 모든 길이의 가능한 문자열을 생성하는 방법을 살펴보겠습니다. 이 방법을 사용하면 문자열을 생성하는 데 모든 문자 조합이 필요합니다. 예를 들어 문자열이 ABC이면 {A,B,C,AB,BA,BC,CB,CA,AC,ABC,ACB,BAC,BCA,CAB,CBA}

를 생성합니다. 이해하기 위한 예입니다.

Algorithm

printAllString(str)

Begin
   n := length of the string str
   count is 2^n – 1
   for each number 0 to count, do
      sub_str := empty string
      for j in range 0 to n, do
         if jth bit of the counter is set, then
            concatenate jth character of str with sub_str
         end if
      done
      repeat:
         print sub_string
      until next permutation of sub_string is not completed
   done
End

Example

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
void printAllString(string str) {
   int n = str.size();
   unsigned int count = pow(2, n);
   for (int counter = 1; counter <count; counter++) { //generate 2^n - 1 strings
      string subs = "";
      for (int j = 0; j < n; j++) {
         if (counter & (1<<j)) //when the jth bit is set, then add jth character
            subs.push_back(str[j]);
      }
      do{
         cout << subs << endl;
      }
      while (next_permutation(subs.begin(), subs.end()));
   }
}

Output

A
B
AB
BA
C
AC
CA
BC
CB
ABC
ACB
BAC
BCA
CAB
CBA
D
AD
DA
BD
DB
ABD
ADB
BAD
BDA
DAB
DBA
CD
DC
ACD
ADC
CAD
CDA
DAC
DCA
BCD
BDC
CBD
CDB
DBC
DCB
ABCD
ABDC
ACBD
ACDB
ADBC
ADCB
BACD
BADC
BCAD
BCDA
BDAC
BDCA
CABD
CADB
CBAD
CBDA
CDAB
CDBA
DABC
DACB
DBAC
DBCA
DCAB
DCBA

위 내용은 문자열이 주어지면 구성 가능한 모든 길이의 문자열을 나열하십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제