相关疑难解决方法(0)

通过反复循环3个元素来查找排列

是否有算法可以找到一系列独特元素的所有可能排列,遵循此规则?

从给定的排列中,必须通过正好循环3个元素来找到下一个排列.它们可以是任何三个元素.

对于这样的3个循环,将仅找到所有排列的子集,但是应该找到可能通过3个循环到达的所有排列,并且在找到所有可到达的排列之前不应找到相同的排列两次.

这是一个示例输入:

1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

输出可能是:

3,1,2,4,5
2,3,1,4,5
4,2,1,3,5
3,4,1,2,5
1,3,4,2,5
4,1,3,2,5
2,4,3,1,5
Run Code Online (Sandbox Code Playgroud)

...等

我试图产生这样一个序列的众多算法之一如下(对于数组a和长度为n):

print (a)
for i = 0 to n-1
    for j = i+1 to n-1
        for l = j+2 to n-1 
            for k = j+1 to l 
                cycle a[i],a[j],a[k]
                print (a)
                cycle a[i],a[j],a[k]
                print (a)
Run Code Online (Sandbox Code Playgroud)

这产生了上面印刷的系列,但接着继续:

1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

..这是已经输出的排列.到目前为止我找到的任何其他寻找下一个3周期的算法都未能找到所有可达到的排列.

algorithm permutation combinatorics

10
推荐指数
1
解决办法
1040
查看次数

以编程方式解决Rubik的立方体

我正在尝试开发一个用C解决Rubik立方体的程序.我使用了回溯技术.这是一个非常漫长的过程,需要大量的迭代,所以我无法解决它.

请给我关于如何更有效地解决这个问题的建议 - 例如其他技术或采用回溯本身.在谷歌我找到了许多解决这个问题的捷径,但我不想通过使用快捷方式来解决这个问题.

c algorithm rubiks-cube

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

algorithm ×2

c ×1

combinatorics ×1

permutation ×1

rubiks-cube ×1