Rumah > pembangunan bahagian belakang > C++ > Diberi rentetan, senaraikan semua rentetan panjang yang mungkin terdiri daripadanya

Diberi rentetan, senaraikan semua rentetan panjang yang mungkin terdiri daripadanya

WBOY
Lepaskan: 2023-08-27 20:05:06
ke hadapan
888 orang telah melayarinya

Diberi rentetan, senaraikan semua rentetan panjang yang mungkin terdiri daripadanya

Dalam bahagian ini kita akan melihat cara menjana semua rentetan yang mungkin bagi sebarang panjang, ini akan mengambil setiap gabungan aksara untuk menjana rentetan. Contohnya, jika rentetan ialah ABC, maka ia akan menjana - {A,B,C,AB,BA,BC,CB,CA,AC,ABC,ACB,BAC,BCA,CAB,CBA}

Jom lihat Contoh untuk difahami.

Algoritma

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
Salin selepas log masuk

Contoh

#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()));
   }
}
Salin selepas log masuk

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
Salin selepas log masuk

Atas ialah kandungan terperinci Diberi rentetan, senaraikan semua rentetan panjang yang mungkin terdiri daripadanya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan