Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Exam Problems] C# Basics - Longest Non-Decreasing Subsequence - Въпрос по условието

Решавам задача 8 от последното домашно "C# за напреднали" и нещо в примерите не ми е съвсем ясно:

 

Input

Output

   
   

1 1 1 2 2 2

1 1 1

 

Според мен 1 1 1 2 2 2 си е цялото ненамаляваща редица и трябва да бъде отпечатано цялото. Аз ли не разбирам условието или примерът не е точен?

 

Благодаря предварително!

Тагове:
2
Programming Basics
GeorgiGeorgiev93 avatar GeorgiGeorgiev93 6 Точки

Решението на тази задача е елементарно, стига да измислиш как да го направиш. На мен след проба грешка и много бели косми ми светна лампичката на 3-тия ден. Промених си цялостната концепция за решението и ми отне около 5 минути да напиша кода. 

Тъй като точно тази вечер не ми е да правя акаунти в нета, пък и смятам, че така ще е по-полезно за вас, ще ви дам указания какви стъпки се следват:

1. Правите си лист с парснатите числа(може и масив)
2. Правите си нов лист(задължително) и му слагате стойностите на първия лист.
3. Сортирате го (втория).
4. Правите един цикъл да обхожда от 0 до дължината на листа (и двата са с еднаква дължина)
5. За всеки i-ти елемент, който е по-голям в първата матрица от съответстващия във втората му слагате стойност null. (Слагам null-ове, защото ако ги трия директно и ми се размества номерацията в листовете. Жокер - list<int?> = new list<int?> Може и да има по-добър начин...)
6. Триете всички null-ове в първата матрица. 
7. Може да ви останат няколко стойности, които са намаляващи (но няма пикови). Елиминирате ги с още един for-loop и принтирате крайния резултат.


ПС: Да, примерите на някои места са грешни. Решена по този начин задачата дава правилни отговори (не като в примерите). Ползвайте дебъгера! Много помага.
 

1
17/08/2015 22:54:39
DenisDuev avatar DenisDuev 39 Точки

Благодаря за решението много помогна, въпреки че вси още не мога да разбера дадените примери иначе по твоя начин се получи :)

0
GeorgiGeorgiev93 avatar GeorgiGeorgiev93 6 Точки

Радвам се, че съм от полза. Обаче открих един малък проблем в задачата си: Не е много ефективна при намиране на по-лявата най-дълга серия. Например ако и напишем 1 1 1 3 3 3 2 2 2, тя ще отговори 1 1 1 2 2 2, а трябва да отговори 1 1 1 3 3 3. За съжаление, нямам време и оставям на вас да измислите ефективен метод за осъвършенстване на решението ми. Стискам палци! Като ми дойде музата, ще дам и свое предложение.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.