我正在寻找以下类别问题的名称,以便我可以通过 Google 搜索有效的算法和更多信息。
我有一个包含三个字符 {-1, 0, 1} 的字母表。
我需要有效地生成长度为 24 的所有字符串,这些字符串大部分是 {0},但有零到八个 {1,-1} 字符以某些模式分布。 (这些模式涉及对 {-1} 的数量和配对的限制)。符合我的标准的字符串总数相当有限:大约 128,000 个。
那么这类问题/算法的名称是什么?
最佳答案
我不确定是否有一个明确定义的“算法类”;这只是组合数学的练习。您可以通过三个步骤进行生成:
- 生成设置了 8 位或更少位的所有 24 位数字(如果预先计算一些查找表,也许可以加快速度)
- 对于每个设置了 n 位的 24 位数字,迭代所有 n 位数字
- 如果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 0
到 1 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/