In diesem Abschnitt erfahren Sie, wie Sie alle möglichen Zeichenfolgen beliebiger Länge generieren. Dabei wird jede Kombination von Zeichen benötigt, um die Zeichenfolge zu generieren. Wenn die Zeichenfolge beispielsweise ABC ist, wird Folgendes generiert: {A,B,C,AB,BA,BC,CB,CA,AC,ABC,ACB,BAC,BCA,CAB,CBA}
Sehen wir uns a an Beispiel zum Verstehen.
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
#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())); } }
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
Das obige ist der detaillierte Inhalt vonListen Sie bei gegebener Zeichenfolge alle möglichen Längenzeichenfolgen auf, aus denen sie besteht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!