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);
}