Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.21 KB | None | 0 0
  1.   class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             var values = new int[] {-10, 1, 2, 3, 4, -10, 2, 3, - 20, 1, 2, 3, 4, 5 };
  6.             var s = MaxSubValue(values);
  7.  
  8.             Console.WriteLine($"begin {s.begin}; end: {s.end}; sum {s.sum}");
  9.             Console.ReadLine();
  10.         }
  11.  
  12.         public static Slice MaxSubValue(int[] values)
  13.         {
  14.             var previous = 0;
  15.             var sum = 0;
  16.             var begin = 0;
  17.             var end = 0;
  18.  
  19.             for (var i = 0; i < values.Length; i++)
  20.             {
  21.                 if (values[i] + sum > sum)
  22.                 {
  23.                     sum += values[i];
  24.                     end = i;
  25.                 }
  26.                 else
  27.                 {
  28.                     begin = i + 1;
  29.                     previous = sum;
  30.                     sum = 0;
  31.                 }
  32.             }
  33.  
  34.             return new Slice
  35.             {
  36.                 begin = begin,
  37.                 end = end,
  38.                 sum = Math.Max(previous, sum)
  39.             };
  40.         }
  41.  
  42.         public struct Slice
  43.         {
  44.             public int begin;
  45.             public int end;
  46.             public int sum;
  47.         }
  48.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement