Loading...
julianvz avatar julianvz 3 Точки

Търся решение на задача от книгата "Принципи на програмирането със C#"

Здравейте,

"Принципи на програмирането със C#". В 16 глава 8 задача 

 

8. Мажорант на масив от N елемента е стойност, която се среща поне

N/2+1 пъти. Напишете програма, която по даден масив от числа на-

мира мажоранта на масива и го отпечатва. Ако мажорантът не съ-

ществува – отпечатва "The majorant does not exists!”.

Пример: {2, 2, 3, 3, 2, 3, 4, 3, 3} → 3

 

се споменава за алтернативно решение:

 

Друго решение: Използвайте стек и сканирайте елементите. При

всяка стъпка проверявайте дали елемента в началото на стека е

различен от следващия елемент от входящата поредица и премахвайте

елемента от стека. В противен случай залепяте елемента към стека.

Накрая, мажорантът ще бъде в стека (ако съществува). Защо? Всеки

път когато намерите два различни елемента, то премахвате и двата.

Тази операция поддържа мажоранта един и същ и намалява дължината

на поредицата, нали? Ако повтаряте това колкото пъти е възможно,

накрая стека ще съдържа само елементи с еднаква стойност –

мажоранта.

 

От две седмици се опитвам да реша задачата със Стек - неуспешно :(. Моля Ви ака разполатате с таково решение да го споделите. Явно не мога да разбера добре указанието към задачата.

Тагове:
1
Въпроси за SoftUni
DimityrDimitrow avatar DimityrDimitrow 6 Точки

Не виждам нуждата от използване на стек. Нужно е да прочетеш първо N, слек което прочиташ колекцията (дали с LINQ или с цикъл е въпрос на избор). След това (или по време на прочитането на колекцията, ако се използва цикъл) елеметите се презпределят според стойностите им в други колекции (List) проверява се дали някоя от колекциите е поне с N / 2 + 1 дължина и това е мажоранта. Същото може да се направи и с филтрация през LINQ, т.е. въпрос на лично предпочитание и логика как да се реши. Съответно, ако колекциите са по-малки от N/2+1 => мажоранта не е открит... Може да се използва и сортиране и логика за преброяване на елементите от една стойност. 

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