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);
}
}
}
在一个数组中找出和最大的一个连续的子数组串
最新推荐文章于 2022-09-30 14:42:20 发布