我遇到了一个棘手的情况,我需要根据不同的因素计算形成100个组合的数量。
那些是
样本输入1: (2-10-20)
它的意思是
输出将是
[40,60] [50,50] [60,40]
[40,60]
[50,50]
[60,40]
这里[30,70],[20,60]无效,因为距离大于20。
样本输入2: [2-5-20]
[40,60] [45,55] [50,50] [55,45] [60,40]
[45,55]
[55,45]
如果您引导我朝正确的方向前进,我将不胜感激。
干杯。
我希望这不是作业问题!
def combinations(n: Int, step: Int, distance: Int, sum: Int = 100): List[List[Int]] = if (n == 1) List(List(sum)) else for { first <- (step until sum by step).toList rest <- combinations(n - 1, step, distance, sum - first) if rest forall (x => (first - x).abs <= distance) } yield first :: rest