Найти последовательность подряд идущих нечетных элементов с максимальной суммой - C#
Формулировка задачи:
Здравствуйте, получил задания на C# которое звучит следующим образом.
Найти последовательность подряд идущих не четных элементов с максимальной суммой. Исходные данные, одномерный массив.
Вот так я все это реализовал.
Но все получилось как то сложно, с большим количество букв. Знатоки C#, может быть подскажите какой нибудь код попроще?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Array
{
class Program
{
static void Main(string[] args)
{
int[] Array = new int[10];
Array = CreateArray(Array);
WriteArray(Array);
Array = SearchNum(Array);
WriteArray(Array);
}
static private int[] CreateArray(int[] Array)
{
Random rnd = new Random();
for (int i = 0; i < Array.Length; i++)
Array[i] = rnd.Next(1, 5);
return Array;
}
static private int[] SearchNum(int[] Array)
{
int summ = 0;
int max = 0;
int count = 0;
int buffcount = 0;
int[][] buffArray = new int[Array.Length][];
buffArray[count] = new int[Array.Length];
for (int i = 0; i < Array.Length; i++)
{
if (Array[i] % 2 != 0)
{
if (i + 1 != Array.Length && Array[i] == Array[i + 1])
{
buffArray[count][i] = Array[i];
buffArray[count][i + 1] = Array[i + 1];
}
if (i > 0 && i + 1 != Array.Length && Array[i] != Array[i + 1] && Array[i] == Array[i - 1])
{
count++;
buffArray[count] = new int[Array.Length];
}
if (i + 1 == Array.Length && Array[i] == Array[i - 1])
{
count++;
buffArray[count] = new int[Array.Length];
}
}
}
for (int i = 0; i < count; i++)
{
for (int j = 0; j < buffArray.Length; j++)
{
summ += buffArray[i][j];
if (summ > max)
{
max = summ;
buffcount = i;
}
}
summ = 0;
}
return buffArray[buffcount];
}
static void WriteArray(int[] Array)
{
int summ = 0;
int count = 0;
Console.WriteLine(" ");
for (int i = 0; i < Array.Length; i++)
{
if (Array[i] != 0)
{
count++;
Console.Write(Array[i] + " ");
summ += Array[i];
}
}
if(summ == 0 )
{
Console.Write("Нет не четных элементов идущих подряд.");
}
else if(summ != 0 && count < Array.Length)
{
Console.Write("Максимальная сумма элементов: " + summ);
}
Console.ReadLine();
}
}
}Решение задачи: «Найти последовательность подряд идущих нечетных элементов с максимальной суммой»
textual
Листинг программы
static void Main(string[] args)
{
int sum, maxSum;
sum = maxSum = 0;
int[] a = new int[20];
Random rnd = new Random();
for (int i = 0; i < 20; i++)
{
a[i] = rnd.Next(1, 20);
Console.Write("{0} ", a[i]);
}
Console.WriteLine();
for (int i = 0; i < 20; i++)
{
if (a[i] % 2 != 0)
{
sum += a[i];
}
else
{
if (sum > maxSum) maxSum = sum;
sum = 0;
}
}
Console.Write("Максимальная сумма: {0}",maxSum);
Console.ReadKey();
}