Наибольшая возрастающая подпоследовательность (LIS) - C#
Формулировка задачи:
Доброго времени суток!
Я не сильно разбираюсь в шарпе(совсем) и при выполнении одного задания возникли некоторые трудности.
Само задание:
Пусть задана строка X из заглавных букв латинского алфавита. Требуется найти самую длинную монотонно возрастающую подпоследовательность строки X.
Сразу вопрос:
Делать через массив?(каждая заглавная буква-отдельный элемент массива)
Как лучше это реализовать?(предыдущий вопрос)
Что не так с самим алгоритмом?(код ниже)
Пыталась сделать с числами,а не с буквами.
static void Main(string[] args) { var P = new int[9]; var M = new int[10]; var X = new int[9]; int low, high,middle; var random = new Random(); FillMassiveRandomly(P, random); WriteMassive(P); Array.Copy(P, M, 9); WriteMassive(M); int MAXimal = 0; int NewMAXimal; for (int i = 0; i < 8; ++i) { low = 1; high = MAXimal; while (low <= high) { middle = (low + high) / 2; if (X[M[middle]] < X[i]) low = middle + 1; else high = middle - 1; } NewMAXimal = low; P[i] = M[NewMAXimal - 1]; M[NewMAXimal] = i; if (NewMAXimal > MAXimal) MAXimal = NewMAXimal; } var S = new int[MAXimal]; int k = M[MAXimal]; for (int i = MAXimal - 1; i > 0; ++i) { S[i] = X[k]; k = P[k]; } for (int i = 0; i < 9; i++) { Console.Write(S[i]); } //return S; Console.ReadLine(); }
Решение задачи: «Наибольшая возрастающая подпоследовательность (LIS)»
textual
Листинг программы
using System; using System.Collections; namespace Massiv_test { class Program { static void Main(string[] args) { int[] array = new int[10]; Random random = new Random(); for (int i = 0; i < array.Length; i++) array[i] = random.Next(0, 20); Print(array); int count = 1, currentCount = 1; for (int i = 0; i < array.Length - 1; i++) { if (array[i + 1] > array[i]) currentCount++; else { if (count < currentCount) count = currentCount; currentCount = 1; } } Console.WriteLine("count = {0}", count); Console.ReadLine(); } public static void Print(int[] array) { Console.WriteLine(); for (int i = 0; i < array.Length; i++) Console.Write("{0} ",array[i]); Console.WriteLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д