LINQ查询以获取最大为N的所有数字(正数和负数),其总和为数字K

Linq query to get all numbers (positive and negative) up to N that sum up to number K(LINQ查询以获取最大为N的所有数字(正数和负数),其总和为数字K)
本文介绍了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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)