[C# Advanced] 11. Parking System
Здвавейте, някой може ли да хвърли едно рамо за тази задача 11. Parking System от Matrices - Exercise
Минават ми само 3 теста
ето код:
https://pastebin.com/By6TYY4g
Здвавейте, някой може ли да хвърли едно рамо за тази задача 11. Parking System от Matrices - Exercise
Минават ми само 3 теста
ето код:
https://pastebin.com/By6TYY4g
От пръв поглед, на ред 43
for (int row = 1; row < matrix.Length; row++)
трябва да стане
for (int row = 1; row < input[1]; row++)
или
for (int row = 1; row < matrix[rowIndex].Length; row++)
защото matrix.Length връща броят на редовете. Тази поправка ще пробутва още два теста :-).
Освен това не видях проверка за излизане на индекса от границите на масива при търсене на свободно място ...
Но нищо не помага при тестовете с преразход на памет.
Успех! :-)
Колега, ако използваш матрица, ще го докараш максимум до 80 точки.
Днес загубих близо 5 часа да боря джъджа с матрици.... и загубих.
Колега (минал по същият път) ме посъветва да изпозвам Dictionary<int , HashSet<int>>.
Преработих си програмата и всички тестове минаха.
Ето максимума до който достигнах с матрица (80/100):
https://github.com/Pilgrimage/CSharp-Advanced-2017.05/blob/master/Ch03_Matrices/p11_ParkingSystem/ParkingSystem.cs
Ето и напълно работещо решение без матрица:
Да обърна внимание, тъй като два дни люто се боря с Problem 11. Parking System.
Неясно е X и Y какво означават-кое е ред, кое е колона. Има хубав череж, но с координати на клетка 2,2 !
Накрая разбираме, че Y няма да го подават в първата колона (значи е за колонааааа).ОК
Проверяваме желаната клетка. Ако е свободна заемаме я, ако ли не разделяме реда на lower и upper cells.
В цикъл проверяваме първо lower, после upper.
Това е решение с multidimensional array - 80/100.
Това е абсолютно същото решение с jagged array 100/100.
Времената са еднакви, но хвърля exception.
Нека поне в условието да пише ползвай jagged!
Да не говорим, че при това задание те са по-неудобни.
Ако му потрябва на някой състоянието на паркинга, просто разпечатваш матрицата, а с jagged трябват маневри.
Плюса на jagged array е, че в началото инициализираш само броя редове на структурата, и при всяка команда, ако реда се среща за първи път, тогава го инициализираш и него, иначе си е null. Според мен не са го споменали, за да може да се сетим сами за тази доста значителна оптимизация, особено при случай на размер 10000 х 10000...
Особенно в случай на ПАРКИНГ 10000 на 10000. За какво ги пишат тея описателни прелюдии в задачите?
Времената са еднакви. И хвърля exeption - нито е време нито е памет.
Поне някой от обучаващите да разясни разликите в имплементациите.
Ще цитирам жълта книга за C#: Най – лошото нещо, което можете да кажете на един клиент е:
"Аз мога да направя това!". Вместо това Вие трябва да помислите: "Точно това ли изисква клиента?".
На 5 и 9 тест размерите са 10000 и дава No memory.
За да се реши с матрица/назъбен масив, на дадения ред трябва да се зададе стойност, само когато на него ще паркира кола. Ето го (100/100) решението с назъбен масив (55 реда):
Ще си блъскам главата още малко с матрици, мерси все пам колега
Няма смисъл , и аз я блъсках доста време с матрици, но уви.
Наистина първото нещо, с което човек се сеща, че може да реши задачката е матрици, но накрая осъзнаваш ,че си загубил доста време.
Дам тези тестове за мемори нямат минаване. Все пак се успокоявам, че идеята е да тренираме матрици и не е било загуба на време ;)