C#

Программирование на C Sharp (C#)

Заполнить одномерный массив случайными целыми числами. Найти фрагмент массива максимальной длины, элементы которого монотонно возрастают или убывают. Вывести фрагмент на консоль с указанием вида монотонности.
П*
Ппц ***
184
using System;
using System.Collections.Generic;
namespace Answer {
class Program {
static void Main() {
var box = GetRandomArray(1, 100, 25);
Show(box);
var seq = LongSequence(box);
Show(seq);
Console.ReadKey();
}
static List<int> LongSequence(int[] box) {
var seq = new List<int>();
var tmp = new List<int>();
var i = 0;
while (i < box.Length) {
i = FindSequence(box, i, ref tmp);
if (tmp.Count > seq.Count) seq = tmp.GetRange(0, tmp.Count);
tmp.RemoveRange(0, tmp.Count - 1);
}
return seq;
}
static int FindSequence(int[] box, int index, ref List<int> lst) {
bool semaphore;
if (index == 0) {
if (index != box.Length) lst.Add(box[index]);
else return index;
if (++index != box.Length) lst.Add(box[index]);
else return index;
semaphore = box[index] > box[index - 1];
++index;
} else {
++index;
while (index != box.Length && box[index] == box[index - 1]) lst.Add(box[index]);
if (index == box.Length) return index;
semaphore = box[index] > box[index - 1];
}
if (semaphore) {
while (index != box.Length && box[index] >= box[index - 1]) {
lst.Add(box[index]);
++index;
}
} else {
while (index != box.Length && box[index] <= box[index - 1]) {
lst.Add(box[index]);
++index;
}
}
return --index;
}
static int[] GetRandomArray(int from, int to, int size) {
var rand = new Random();
var box = new int[size];
for (var i = 0; i < size; ++i) box[i] = rand.Next(from, to);
return box;
}
static void Show(int[] box) {
foreach (var item in box) Console.Write($"{item,4}");
Console.WriteLine();
}
static void Show(List<int> box) {
foreach (var item in box) Console.Write($"{item,4}");
var msg = box[0] <= box[box.Count - 1] ? "не убывает" : "не возрастает";
Console.WriteLine(" - монотонно " + msg);
}
}
}
Александр Павлов
Александр Павлов
97 868
Лучший ответ
... 27 27 ...- где тут возрастание?
Никита Степаненко Шел вверх по лестнице, вышел на площадку, прошел горизонтально, идет дальше. Спуска не было.
Ппц *** Монотонность - это однообразие и постоянность. Либо постоянно вверх, либо постоянно вниз. Если число на фрагмент на одном уровне, то он всё равно монотонный.