我已经盯着这个问题看了几分钟。 在我问这个任务之前我做了一些研究,但它是在不同的情况下,他们没有包括我真正需要的东西。 我在SO中找到了这段代码。
static int GetLargestSum(int[] array, int n, int sum)
{
int largestSum = 0;
int previousSum = 0;
for (int i = 0; i <= array.Length - n; i++)
{
if (i == 0)
{
for (int j = 0; j < n; j++)
{
largestSum += array[j];
}
previousSum = largestSum;
}
else
{
int currentSum = previousSum - array[i - 1] + array[i + n - 1];
if (currentSum > largestSum)
{
largestSum = currentSum;
}
previousSum = currentSum;
}
}
return largestSum;
}
是的,这可行,但如果仅适用于最大金额。 我试图修改它以将 sum var 添加到代码中,但实际上并没有那么顺利。 所以如果有人帮助我,我将非常感激,因为我被困在这个算法中。 谢谢!
最佳答案
解决它的方法是遍历数组的每一段并计算其总和。粗略的初稿看起来像这样
public static int ConsecutiveSumArrangements(int[] vals, int count, int sum)
{
var number = 0;
for (int i = 0; i < (vals.Length - count); i++)
{
var segSum = vals.Skip(i).Take(count).Sum();
if (segSum == sum)
{
number++;
}
}
return number;
}
关于c# - 在数组上找到 N 个连续整数,其总和(连续整数)S 是我有的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724865/