生成任意字母的所有组合,最大长度为任意

问题描述

只需加进位即可

假设您的数组包含4个符号,而您想要的长度为3。

以000开头(即,单词上的每个符号=字母[0])

然后加起来:

000 001 002 003 010 011 …

该算法(给定这些索引)只是为了增加最低数量。如果达到字母表中符号的数量,则增加一个数字(遵循相同的规则)并将当前值设置为0。

C ++代码

int N_LETTERS = 4;
char Alphabet[] = {'a', 'b', 'c', 'd'};

std::vector<std::string> get_all_words(int length)
{
  std::vector<int> index(length, 0);
  std::vector<std::string> words;

  while(true)
  {
    std::string word(length);
    for (int i = 0; i < length; ++i)
      word[i] = Alphabet[index[i]];
    words.push_back(word);

    for (int i = length-1; ; --i)
    { 
      if (i < 0) return words;
      index[i]++;
      if (index[i] == N_LETTERS)
        index[i] = 0;
      else
        break;
    }
  }
}

代码未经测试,但是应该可以解决

解决方法

假设我有一个任意大小的数组,其中包含单个字符。我想计算这些字符的所有可能组合,直到任意长度。

因此,可以说我的数组是[1、2、3]。用户指定的长度为2。然后可能的组合为[11、22、33、12、13、23、21、31、32]。

我在寻找合适的算法时遇到了麻烦,该算法允许任意长度,而不仅仅是排列数组。哦,虽然速度不是绝对关键,但也应该相当快。

解锁查看全部内容

付费后查看完整内容
限时 微信扫码支付 ¥9.9 19.9

编程问答相关问答

在 CSS 中设置 cellpadding 和 cellspacing?
如何在 Java 中创建内存泄漏?
浮点数被破坏了吗?
按字符串属性值对对象数组进行排序
如何加快Android模拟器的速度?
如何舍入至多 2 位小数?
使用 Git 版本控制查看文件的更改历史记录
如何在 JavaScript 中检查空/未定义/空字符串?
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注