在一个数组中找出和最大的一个连续的子数组串

来源:互联网 发布:淘宝银座365是正品吗 编辑:程序博客网 时间:2024/06/05 00:03
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication11{       class Program    {        static void Main(string[] args)        {          //int[] a =new int[]{1,-2,3,5,-4, 3, 0, -1};            //int[] a = new int[] { -1, -2, -3, -5, -4, -3, -10, -1 };            FindMaxSumInString2();        }                public static void FindMaxSumInString2()        {            //int[] a = new int[] { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 };            int[] a = new int[] { -1, -2, -3, -5, -4, -3, -10, -1 };            int sum = int.MinValue;            int tempSum = 0;            for (int i = 0; i < a.Length; i++)            {                //old sum is <=0; ignore it.                if (tempSum > 0)                {                    tempSum = tempSum + a[i];                }                else                {                    tempSum = a[i];                }                if (tempSum > sum)                {                    sum = tempSum;                }            }            Console.WriteLine(sum);        }         public void FindMaxSumInString()        {            //int[] a = new int[] { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 };            int[] a = new int[] { -1, -2, -3, -5, -4, -3, -10, -1 };            int sum = int.MinValue;            int tempSum = 0;            for (int i = 0; i < a.Length; i++)            {                for (int j = i; j < a.Length; j++)                {                    tempSum = tempSum + a[j];                    if (tempSum > sum)                    {                        sum = tempSum;                        Console.WriteLine("start: " + i);                        Console.WriteLine("end: " + j);                    }                }                tempSum = 0;            }            Console.WriteLine(sum);        }               }    }

0 0
原创粉丝点击