algorithm - 枚举满足给定限制的所有字符串

标签 algorithm string enumeration combinatorics

我正在寻找以下类别问题的名称,以便我可以通过 Google 搜索有效的算法和更多信息。

我有一个包含三个字符 {-1, 0, 1} 的字母表。

我需要有效地生成长度为 24 的所有字符串,这些字符串大部分是 {0},但有零到八个 {1,-1} 字符以某些模式分布。 (这些模式涉及对 {-1} 的数量和配对的限制)。符合我的标准的字符串总数相当有限:大约 128,000 个。

那么这类问题/算法的名称是什么?

最佳答案

我不确定是否有一个明确定义的“算法类”;这只是组合数学的练习。您可以通过三个步骤进行生成:

  1. 生成设置了 8 位或更少位的所有 24 位数字(如果预先计算一些查找表,也许可以加快速度)
  2. 对于每个设置了 n 位的 24 位数字,迭代所有 n 位数字
  3. 如果n位数字的第k位为0,则24位数字的第k位设置打印为-1,否则打印为1

为了更好地解释步骤 2-3,请说您的 24 位数字设置了 4 位,如下所示

0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0

然后,我们迭代从 0 0 0 01 1 1 1 的所有 16 个 4 位数字,例如:

0 0 0 0 gives the string  0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 0
0 1 1 0 gives the string  0 0 0 -1 0 0 0 0 0 0 0 0  1  1 0 0 0 0 0 -1 0 0 0 0
0 1 0 0 gives the string  0 0 0 -1 0 0 0 0 0 0 0 0  1 -1 0 0 0 0 0 -1 0 0 0 0
1 1 1 1 gives the string  0 0 0  1 0 0 0 0 0 0 0 0  1  1 0 0 0 0 0  1 0 0 0 0

关于algorithm - 枚举满足给定限制的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033501/

相关文章:

java - 如何按交集过滤一组集合?

java - 具有多个属性的 Jax-ws Enum

java - 验证字符串是否与格式字符串匹配

c - 在 C 中初始化大小的静态字符串列表

C++ - enum vs. const vs. #define

swift - 如何使用枚举创建计算函数?

algorithm - 具有常量的嵌套循环的时间复杂度

algorithm - 长波紫外线 - 1394 : And There Was One Algorithm

python - 如何检测子列表中的逻辑和字符串索引并将其删除

string - xslt 有 split() 功能吗?