【发布时间】:2017-10-26 13:09:13
【问题描述】:
我们必须根据要选择的项目 input3 选择最佳项目。选择应该是我们不总是采取最大项目。相反,我们会选择没有太大区别的项目。
input1: total items
input2: array of items
input3: items to be selected
Scenario 1:
input: 6, {44,55,605,100,154,190}, 1
output should be: {605}
input: 5, {15,85,32,31,2}, 2
output should be: {32,31}
随着我们增加要选择的项目数量,输出应该有更多的项目被选择,差异最小。 以下是我正在尝试的代码,我是新手,请帮助: 我被困在如何使这种动态化。
public static int[] Find(int totalItems, int[] values, int totalToBeSelected)
{
var i = values;
int[] results = new int[totalToBeSelected];
var resultList = new List<int>();
if (totalToBeSelected == 1)
{
resultList.Add(values.Max());
return resultList.ToArray();
}
Array.Sort(i);
var minmumDiff = (i[0] - i[1]) * -1;
for (int k = 1; k < i.Length; k++)
{
var differnce = i[k] - i[k - 1];
if (differnce < minmumDiff)
{
resultList.Add(i[k]);
resultList.Add(i[k - 1]);
minmumDiff = differnce;
}
}
return resultList.ToArray();
}
【问题讨论】:
-
看起来像是来自 Techgig 的问题,不是吗?
-
你能发布这个问题的实际问题陈述吗?目前尚不清楚您如何从输入中获得该输出。此外,您为代码提供什么输入,它提供什么输出以及您想要什么输出?你能发一个minimal reproducible example吗?您是否在调试器中单步执行您的代码或添加了打印语句以查看它与您期望的不同之处?
-
@Dukeling 我已经更新了问题,如果您需要更多信息,请告诉我,谢谢
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
-
完全不清楚游戏规则是什么。如果它要求您从数组
{15,85,32,31,30,28}中获取三个项目怎么办?预期的结果是什么?如果数组颠倒了怎么办?你应该取差值的绝对值吗?您需要更新您的问题以澄清问题。否则我们甚至无法帮助您设计解决方案
标签: c# arrays algorithm equation-solving