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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:LINQ查询以获取最大为N的所有数字(正数和负数),其总和为数字K
基础教程推荐
猜你喜欢
- 将 XML 转换为通用列表 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01