このセクションでは、文字列を生成するために文字のあらゆる組み合わせを必要とする、任意の長さの可能なすべての文字列を生成する方法を説明します。たとえば、文字列が ABC の場合、次のように生成されます - {A,B,C,AB,BA,BC,CB,CA,AC,ABC,ACB,BAC,BCA,CAB,CBA}
# # 理解するために例を見てみましょう。 アルゴリズム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
#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
以上が文字列を指定して、それを構成する可能な長さの文字列をすべてリストします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。