可能是重复问题:
生成所有可能的组合 我不确定如何表达这个问题,但我在解决一个愚蠢的逻辑谜题时使用了一个LINQ语句。相关的代码如下:
生成所有可能的组合 我不确定如何表达这个问题,但我在解决一个愚蠢的逻辑谜题时使用了一个LINQ语句。相关的代码如下:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
from myD in Enumerable.Range(1, 40)
where myA + myB + myC + myD == 40
&& myA <= myB
&& myB <= myC
&& myC <= myD
select new[] {myA, myB, myC, myD})
基本上,它会生成符合Where语句条件的A、B、C和D的所有组合。
现在我想泛化这个过程,以便我可以使用N个值而不仅仅是四个。例如,对于3个值-相应的代码将是:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
where myA + myB + myC == 40
&& myA <= myB
&& myB <= myC
select new[] {myA, myB, myC})
自然地,我不想修改代码 - 我想要一个可以调用并提供整数并返回正确对象的函数。
我尝试过几次,但我真的看不出如何做到这一点。有人能指点我吗?