代码如下:
static void GetMax() { int[] items = new int[] { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 }; //int[] items = new int[] { 31, -41, -59, -26}; //int[] items = new int[] { -10,20,-5}; int beginIndex = 0; int? maxTotal = null; int endIndex = 0; int itemsLength = items.Length; if (itemsLength == 1) { //只有一个元素 maxTotal = items[0]; beginIndex = 1; endIndex = 1; } else if (itemsLength == 2) { //只有二个元素 if (items[0] > items[1]) { maxTotal = items[0]; beginIndex = 1; endIndex = 1; } else { maxTotal = items[1]; beginIndex = 2; endIndex = 2; } if ((items[0] + items[1]) > maxTotal) { maxTotal = items[0] + items[1]; beginIndex = 1; endIndex = 2; } } else { for (int i = 0; i < itemsLength; i++) { for (int j = i + 1; j < itemsLength; j++) { int tempMax = items[i]; for (int k = (i + 1); k <= j; k++) { tempMax += items[k]; } if (!maxTotal.HasValue || tempMax > maxTotal) { beginIndex = i + 1; endIndex = j + 1; maxTotal = tempMax; } } } } Console.WriteLine("最大值:" + maxTotal); Console.WriteLine("开始编号为:" + beginIndex); Console.WriteLine("结束编号为:" + endIndex); Console.ReadKey(); }
等待更新...