我不确定这是不是问这个问题的好地方。我就试试。
问题:
假设val threshold: Int
和val size: Int
。
我正在寻找一个有效的算法来遍历所有可能的x: Set[Int]
位置x.sum < threshold
和x.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/