小编Mat*_*int的帖子

如何排序排列,使每个排列中至少有1个元素恰好相差1

这篇文章提供了一些很好的python代码来查找一个总和为某个数字S的集合中的所有排列.我想消除输出中的不连续性,这样输出行中的任何一个元素都不会超过任何一个相邻的一排.

以下是生成我想要订购/排序的输出的代码:

def f(n,s):
    if n == 1:
        yield (s,)
    else:
        for i in xrange(s + 1):
            for j in f(n - 1,s - i):
                yield (i,) + j

L = list(f(3,5))

for i in L:
    print i
Run Code Online (Sandbox Code Playgroud)

输出:

(0, 0, 5)
(0, 1, 4)
(0, 2, 3)
(0, 3, 2)
(0, 4, 1)
(0, 5, 0)
(1, 0, 4) <-Bad, 0 transitioned to 4 from one row to the next
(1, 1, 3)
(1, 2, 2)
(1, …
Run Code Online (Sandbox Code Playgroud)

python sorting algorithm generator permutation

7
推荐指数
1
解决办法
228
查看次数

标签 统计

algorithm ×1

generator ×1

permutation ×1

python ×1

sorting ×1