以下是针对类似问题的一个解决方案的链接。我想要添加到这个解决方案中的是组合应该仅限于那些满足总和条件的项目。
https://stackoverflow.com/a/10629938/4347577
提前致谢
答案 0 :(得分:0)
最简单的解决方案是添加一个where
子句,用于过滤所需的结果。例如:
public static IEnumerable<IEnumerable<int>> GetPermutationsWithSum(
IEnumerable<int> list, int length, int sum)
{
return GetPermutationsWithRept(list, length).Where(lst => lst.Sum() == sum);
}
以下是GetPermutationsWithRept的定义(来自您在问题中链接的答案)
public static IEnumerable<IEnumerable<T>> GetPermutationsWithRept<T>(
IEnumerable<T> list, int length)
{
if (length == 1) return list.Select(t => new T[] { t });
return GetPermutationsWithRept(list, length - 1)
.SelectMany(t => list, (t1, t2) => t1.Concat(new T[] { t2 }));
}