Arrays 在数组中查找固定大小的子数组
问题是Arrays 在数组中查找固定大小的子数组,arrays,linq,c#-4.0,Arrays,Linq,C# 4.0,问题是 Given an array of integers and a length L, find a sub-array of length L such that the products of all integers are the biggest. Example: Input: {4, 1, -7, -8, 9, 2, 0, 5}, 3 Output: {-7,-8,9} 我几乎完成了,我可以得到最大的产品,但阵列
Given an array of integers and a length L, find a sub-array of length L
such that the products of all integers are the biggest.
Example:
Input: {4, 1, -7, -8, 9, 2, 0, 5}, 3
Output: {-7,-8,9}
我几乎完成了,我可以得到最大的产品,但阵列本身
static void Main(string[] args)
{
int[] array = { 4, 1, -7, -8, 9, 2, 0, 5 };
int L = 3;
int max = Int32.MinValue;
for (int i = 0; i <= array.Length - L; i++)
{
var subArray = new ArraySegment<int>(array, i, L);
var product = subArray.Aggregate((a, b) => a * b);
if (product > max)
max = product;
}
Console.WriteLine(max); // Help: I need to output the sub-array.
Console.Read();
}
static void Main(字符串[]args)
{
int[]数组={4,1,-7,-8,9,2,0,5};
int L=3;
int max=Int32.MinValue;
对于(int i=0;i a*b);
如果(产品>最大值)
最大值=产品;
}
控制台写入线(最大值);//帮助:我需要输出子数组。
Console.Read();
}
假设获得最大产品的逻辑已经正确,您可以简单地使用与max
变量类似的附加变量maxSubArray
:
int[] array = { 4, 1, -7, -8, 9, 2, 0, 5 };
int L = 3;
int max = Int32.MinValue;
ArraySegment<int> maxSubArray = new ArraySegment<int>();
for (int i = 0; i <= array.Length - L; i++)
{
var subArray = new ArraySegment<int>(array, i, L);
var product = subArray.Aggregate((a, b) => a * b);
if (product > max)
{
max = product;
maxSubArray = subArray;
}
}
Console.WriteLine(max);
foreach (var i in maxSubArray)
{
Console.WriteLine(i);
}
int[]数组={4,1,-7,-8,9,2,0,5};
int L=3;
int max=Int32.MinValue;
ArraySegment maxSubArray=新ArraySegment();
对于(int i=0;i a*b);
如果(产品>最大值)
{
最大值=产品;
最大子阵列=子阵列;
}
}
控制台写入线(最大值);
foreach(maxSubArray中的变量i)
{
控制台写入线(i);
}