algorithm - 计算并迭代序列的排列

标签 algorithm recursion permutation

我有一个字符串和一些空格,例如字符串是“accttgagattcagt”,我有 10 个空格要插入。

如何遍历该字符串和空格的所有组合?字符串中的字母不能重新排序,必须插入所有空格。

如何计算重排的次数(不迭代)?

什么是正确的词呢?排列、组合还是其他?

(我将其可视化为 1 和 0 的字符串,其中 1 由字符串使用,0 是空格。

因此,一个由 3 个字母和 2 个空格组成的短字符串将要求所有 5 位数字都包含 3 个 1 和 2 个 0,例如11100, 11010, 11001, 10110, 10101, 10011, 01110, 01101, 01011, 00111?

但是在纸上制作短序列很容易,我正在努力制作一个 for 循环来完成它:(。创建这个序列的伪代码非常好,请数一数它有多长,好吗?

递归会更容易理解,但如果以某种方式避免递归,它会更快吗?)

最佳答案

这就是组合。

So a short string of 3 letters and 2 spaces would be asking for all all 5 bit numbers with 3 1s and 2 0s e.g. 11100, 11010, 11001, 10110, 10101, 10011, 01110, 01101, 01011, 00111?

您将三个“1”放在 5 个索引之一上,顺序无关紧要。所以它是 5 比 3:

5!/((5-3)!3!) = 5*4/(2*1) = 10

关于wikipedia.org的文章有一张图片说明了 3 个红色和 2 个白色方 block 的随机序列。

这可能有用: Statistics: combinations in Python

关于algorithm - 计算并迭代序列的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177500/

相关文章:

python - 从排列列表中获取所有独特的组合

c - 按升序和降序对列表进行排序

javascript - 在网格中分组矩形

c# - ICloneable接口(interface)

matlab - 使用递归 MATLAB 计算斐波那契数列的总和

c# - 获取具有大 K 的 N 元素列表中 K 和更少元素的所有组合

java - 使用 BFS 搜索表示 Java 中的 Word Chain 问题的图形

algorithm - 在笛卡尔平面上绘制、拖放和重叠形状的基本算法

c# - .NET MVC4 中的递归 IEnumerable 菜单不返回结果

ruby - 两个运算符(+,-)对数组项的所有可能操作