我有一个字符串和一些空格,例如字符串是“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 的随机序列。
关于algorithm - 计算并迭代序列的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177500/