Найти последовательность подряд идущих нечетных элементов с максимальной суммой - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д