本文介绍了LINQ查询以获取最大为N的所有数字(正数和负数),其总和为数字K的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个特定的任务,要创建一个仅使用LINQ的函数,这就是它对我具有挑战性的原因。 问题类似于:
生成N个数字的加(+-)加和为K的所有表达式 举个例子,如果我有N=3,K=0。在某个点上,我应该有8个带正负(n组合的2次方)的数字组合,并且使用一些WHERE子句,我应该只提取那些总和为0(即K)的数字。 因此,结果应该类似于:
-1-2+3=0;
+1+2-3=0;
再说一次,我只能使用LINQ查询,不能使用其他查询,而且我不能完全理解这个问题。有人能帮忙吗?推荐答案
感谢任何试图提供帮助的人,不幸的是,对于此问题而言,所有解决方案都太复杂,因此我设法找到了我自己的解决方案,它稍微简单一些,但您的解决方案将我引导到了正确的方向。
IEnumerable<string> seed = new[] { "" };
var x = Enumerable.Range(0, n).Aggregate(seed, (a, _) => a.
SelectMany(s => new[] { s + "+", s + "-" }));
return x.Select((a) => a.Select((a, b) => a == '+' ? b + 1 : (b + 1) * -1))
.Where(r => r.Sum() == k);
这篇关于LINQ查询以获取最大为N的所有数字(正数和负数),其总和为数字K的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!