5. 求陣列的子陣列之和的最大值

while (true)
{
    var n = Console.ReadLine();
    if (n == "") continue;
    var l = Console.ReadLine();
    if (l == "") continue;
    var nums = l.Split(' ').Select(int.Parse).ToArray();

    int max = 0;
    int sum = 0;

    int a = 0;
    int b = 0;
    int last = 0;
    for (global::System.Int32 i = 0; i < nums.Length; i++)
    {
        sum += nums[i];
        if (sum > max)
        {
            max = sum;
            b = i;
            a = last;
        }
        max = Math.Max(max, sum);
        if (sum < 0)
        {
            sum = 0;
            last = i + 1;
        }
    }
    Console.WriteLine(max);
    Console.WriteLine($"{a} {b}");
    Console.WriteLine();
}

Last updated