Loading...
VasilValchanov avatar VasilValchanov 555 Точки

[C# Advanced] 11. Parking System

Здвавейте, някой може ли да хвърли едно рамо за тази задача 11. Parking System от Matrices - Exercise

Минават ми само 3 теста
ето код:

https://pastebin.com/By6TYY4g

Тагове:
2
C# Advanced 05/06/2017 18:11:33
Pilgrimage avatar Pilgrimage 515 Точки
Best Answer

От пръв поглед, на ред 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 връща броят на редовете. Тази поправка ще пробутва още два теста :-).

Освен това не видях проверка за излизане на индекса от границите на масива при търсене на свободно място ...
Но нищо не помага при тестовете с преразход на памет.

Успех! :-)

0
VasilValchanov avatar VasilValchanov 555 Точки

Ще си блъскам главата още малко с матрици, мерси все пам колега

0
e.manolov avatar e.manolov 80 Точки

Няма смисъл , и аз я блъсках доста време с матрици, но уви.

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

0
VasilValchanov avatar VasilValchanov 555 Точки

Дам тези тестове за мемори нямат минаване. Все пак се успокоявам, че идеята е да тренираме матрици и не е било загуба на време ;)

0
Pilgrimage avatar Pilgrimage 515 Точки

Колега, ако използваш матрица, ще го докараш максимум до 80 точки.
Днес загубих близо 5 часа да боря джъджа с матрици.... и загубих.
Колега (минал по същият път) ме посъветва да изпозвам Dictionary<int , HashSet<int>>. 
Преработих си програмата и всички тестове минаха.

Ето максимума до който достигнах с матрица (80/100): 
https://github.com/Pilgrimage/CSharp-Advanced-2017.05/blob/master/Ch03_Matrices/p11_ParkingSystem/ParkingSystem.cs

Ето и напълно работещо решение без матрица:

https://github.com/Pilgrimage/CSharp-Advanced-2017.05/blob/master/Ch03_Matrices/p11_ParkingSystem2/ParkingSystem.cs

2
butoff avatar butoff 33 Точки

Да обърна внимание, тъй като два дни люто се боря с 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 трябват маневри.

0
pwnd0rum avatar pwnd0rum 35 Точки

Плюса на jagged array е, че в началото инициализираш само броя редове на структурата, и при всяка команда, ако реда се среща за първи път, тогава го инициализираш и него, иначе си е null. Според мен не са го споменали, за да може да се сетим сами за тази доста значителна оптимизация, особено при случай на размер 10000 х 10000...

1
butoff avatar butoff 33 Точки

 Особенно в случай на ПАРКИНГ 10000 на 10000. За какво ги пишат тея описателни прелюдии в задачите?

  Времената са еднакви. И хвърля exeption - нито е време нито е памет.

Поне някой от обучаващите да разясни разликите в имплементациите.

Ще цитирам жълта книга за C#: Най – лошото нещо, което можете да кажете на един клиент е:
"Аз мога да направя това!". Вместо това Вие трябва да помислите: "Точно това ли изисква клиента?".


 

0
GeorgiKostadinov933 avatar GeorgiKostadinov933 7 Точки

На 5 и 9 тест размерите  са 10000 и дава No memory.

0
NikolayLiubomirov avatar NikolayLiubomirov 82 Точки

За да се реши с матрица/назъбен масив, на дадения ред трябва да се зададе стойност, само когато на него ще паркира кола. Ето го (100/100) решението с назъбен масив (55 реда):

https://pastebin.com/HQtXXike

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