Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- var values = new int[] {-10, 1, 2, 3, 4, -10, 2, 3, - 20, 1, 2, 3, 4, 5 };
- var s = MaxSubValue(values);
- Console.WriteLine($"begin {s.begin}; end: {s.end}; sum {s.sum}");
- Console.ReadLine();
- }
- public static Slice MaxSubValue(int[] values)
- {
- var previous = 0;
- var sum = 0;
- var begin = 0;
- var end = 0;
- for (var i = 0; i < values.Length; i++)
- {
- if (values[i] + sum > sum)
- {
- sum += values[i];
- end = i;
- }
- else
- {
- begin = i + 1;
- previous = sum;
- sum = 0;
- }
- }
- return new Slice
- {
- begin = begin,
- end = end,
- sum = Math.Max(previous, sum)
- };
- }
- public struct Slice
- {
- public int begin;
- public int end;
- public int sum;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement