Rumah > Artikel > pembangunan bahagian belakang > 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.
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
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!