如何在C++中生成字符串序列

how to generate the string sequence in C++

本文关键字:字符串 C++      更新时间:2023-10-16

我正在尝试在我的计算机上执行以下操作,但没有让它执行,比如说我有一个人的名字,我想对他名字中的字母进行不同的组合:

NAME ABC
                                       ABC
                                 /      |      
                               A        B        C
                              /|     / |      /| 
                            AA AB AC BA BB BC CA CB CC 
                             .           .        .
                             .           .        .

我想对上述名称进行组合,例如:

ABC A B C AA AB AC BA BB BC CA CB CC.... AAA... BBB... CCC...

如何在C++中执行此操作?

我为它编写了以下代码:

 string c = "ABC";
 for (i = 0; i < c.length(); i++)
     c.at(i);

但它只产生了A, B, C.如何生成AB, AA, AC, ...

你可以这样做

string c='ABC';
int n=c.length();
for(int i=0;i<n;i++)
{
  std::cout<<c[i]<<" ";
  for(int j=0 ; j< n ;j++)
  {
      std::cout<<c[i]<<c[j]<<" ";
  }
}

输出为: A AA AB AC B BA BB BC C CA CB CC

如果你想要三个字母的组合,请在第二个 for 循环中添加第三个 for 循环,具有相同的端点,例如

for(int k=0;k<n;k++)和 for 循环cout<<c[i]<<c[j]<<c[k]<<" "内部

这是一个涉及可爱递归模板的解决方案:

#include <iostream>
#include <string>
template <int Depth>
void print_combinations(const std::string& name, const std::string& prefix = "")
{
    for (int i=0; i < name.size(); i++) {
        std::cout << prefix << name[i] << " ";
        print_combinations<Depth - 1>(name, prefix + name[i]);
    }
}
template <>
void print_combinations<0>(const std::string&, const std::string&)
{
}
int main()
{
    std::string name = "ABC";
    print_combinations<4>(name);
}

对于Depth=4(如上所述),它打印

A AA AAA AAAA AAAB AAAC AAB AABA AABB AABC AAC AACB AACC ABA ABA ABAB ABAC ABB ABBA ABBC ABC ABCA ABCB ABCC AC ACA ACB ACBA ACBC ACBC ACCA ACCB ACB BA BAAB BAAC BAB BABB BAB BABB BAC BAC BABA BABB BAC BACB BACC BBA BBAC BBB BBBB BBBC BBA BBBA BBBB BBBC BBC BBCA BBBC BBCA BBCB BBCC BCA BCAA

BCAB BCAC BCB BCBA BBCA BBBA BAB BACA BBAB BBA BBA BBAB BBA BBAB BACA BBAB BABA BBAB BBA BBBA BBBC BACA BBAB BBA BB BBA BBA BB BBA BB BBA BB BBA BB BB BBC BBC BCC BCAA BCAB BCA BACA BACB BBBA BBC BACA BBA BBA BBC BACA BABA中行 密件抄送 BCCC CA CAA CAAA CAAB CAAC CAB CAB CABB CABB CABC CACA CACB CBA CBAA CBAB CBAB

CBB CBBA CBBB CBBC CBC CBCA CBCB CBC CCA CCAA CCAB CCAC CCB CCBA CCA CCBC CCCCA CCBC CCBC CCCCA CCBC CCBC CCC CCB CCBC CCC CCB CCBC CCBA CCBC CCBA CCBC CCCCA CCBC CCBC CCCCA CCCCB CCBC CCBC CCCCA CCCCA CCBC CCBC CCCCA CCCCB CCBC CCCCA CCCCB CCBC CCCCA CCCCA CCBC CCCCA CCCCB CC