我不确定这是不是问这个问题的好地方。我就试试。
问题:
假设val threshold: Intval size: Int
我正在寻找一个有效的算法来遍历所有可能的x: Set[Int]位置x.sum < thresholdx.size == n。只应考虑大于0的整数这当然是有限的可能性。
我已经试过开发一个,但即使是较小的投入,它需要永远。
提前谢谢。

最佳答案

你可以很容易地递归地生成它们。下面是Python中的一些代码,但是它应该直接转换成Scala。

def sets(n, threshold, atleast=1):
    if threshold <= n * (n + atleast * 2 - 1) // 2: return
    if n == 0:
        yield []
        return
    for i in xrange(atleast, threshold):
        for s in sets(n - 1, threshold - i, i + 1):
            yield [i] + s

print list(sets(4, 15))

关于algorithm - 遍历整数集的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20718431/

10-10 01:01