Loading...
alexei.tcekov avatar alexei.tcekov 33 Точки

Колега сподели какво не ти излиза ? 

https://gist.github.com/alexeitcekov/470a80d0a4ea4bd440d2fb07c296b874

https://gist.github.com/alexeitcekov/a52a66a2eff02a0d91e78dded38437a6

0
18/05/2016 12:13:57
val4o89 avatar val4o89 240 Точки

На 8-ма нали с рекурсия трябва, аз я направих с рекурсия, но ми гърмят последните 2 теста за време. То мойта ай-петичка се зори бая :)

Как да го направя по-бързо? Ето моето р-ие за 75т. : https://github.com/val4o89/CSharp-Advanced-Softuni/blob/master/Program.cs

0
18/05/2016 13:34:16
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Имате ли идея защо на простичък код като на зад.3 последните 2 теста ми дават Time limit ?

static void Main()
        {
            int n = int.Parse(Console.ReadLine());
            Stack<int> nums = new Stack<int>();
            for (int i = 0; i < n; i++)
            {
                string line = Console.ReadLine();
                if (line == "2")
                {
                    nums.Pop();
                }
                else if (line == "3")
                {
                    Console.WriteLine(nums.Max());
                }
                else
                {
                    nums.Push(int.Parse(line.Split(' ')[1]));
                }
            }
        }

Какво трябва да се оптимизира в случая?

0
val4o89 avatar val4o89 240 Точки

методът Max() e бавен и за това ти гърми, за това трябва да пазищ максималните стойности в помощен стек (втори, освен основния), и в случай, че попваш от основния трябва да попваш и от помощния.

2
DenisAngelov avatar DenisAngelov 2 Точки

Аз предлагам направо да си запазваш maxValue в един int все пак не е нужен цял stack за една цифра 

Редакция: 
Слагам линк към моето решение тъй като явно не си ме разбрал за maxValue-то

https://github.com/DenisAngelov/SoftUni-Advanced-CSharp/blob/master/01.BasicStackOperations/03.MaximumElement/MaxElement.cs

0
19/05/2016 10:52:59
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

С наставленията успях да го докарам до 100/100. Видях, че има препоръки за swich case. Така го бях направила в началото, но в случая не е от голямо значение. Според мен може и с if-else, кой както си предпочита.

Кодът е ТУК

Благодаря за насоките.

0
Alex0101 avatar Alex0101 374 Точки

С една цифра ще е трудно, защото можеш да попнеш макса от основния стек , а следващия макс да е по-навътре. Следователно ще пазиш макс в една променлива, обаче ако го попнеш от основния стек гърмиш

0
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Нали заради това има допълнителен стек. Той пази предните max-ове. ? При Pop() от допълнителния стек int max се променя с стойността на предния мах, който е "по-навътре"... ако има бъг в логиката ще се радвам да чуя :)

0
silvi81 avatar silvi81 77 Точки

val4o89 На мен със същото решение ми дава 100 точки.

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