Loading...
zisov4eto avatar zisov4eto 19 Точки

[C# Sample Exam 13.06] Problem 2. Jedi Galaxy

Здравейте колеги!

Имам поблем с намемирането на оптимизирано решение на тази задача и под оптимизирано имам предвид без нито една излишна итерация.

На кратко това което правя е да намеря диагоналите по, които Иво и злата Сила се движат като използвам формулката от проблема от отвореният курс по Алгоритми - Eight Qeens. След това използвам един бърз while, който да ми намери най-първата клетка от текущият диагонал, която е в матрицата. Правя същото нещо и за двата диагонала. Нататък логиката продължава стандартно с един while, който се движи само по диагонала и в зависимост дали е Иво или злата Сила, събира или унищожава клетките през, които минава.

 

Проблемът: 0/100 точки в judge. Двата нулеви теста минават. Също така минават и комбинирано.

 

SOURSE CODE

Тагове:
0
C# Advanced 16/06/2016 15:50:12
vani4ka66 avatar vani4ka66 24 Точки

Много сложна си направил задачата. Понеже в момента не мога да видя къде гърми, ако искаш виж друго решение, според мен е доста оптимизирано!

 

https://github.com/vani4ka66/Melrah-Shake/blob/master/Jedi%20Galaxy

1
zisov4eto avatar zisov4eto 19 Точки

Моят код дава само грешни отговори. Застраховал съм се да не гърми никъде. 

 

По-рано видях твоето решение. Аз точно това искам да избегна. Да не тръгвам от там където са ми зададени координатите, защото това може да е много извън матрицата. 

 

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

 

Знам, че съм си ослужнил работата, но целта ми е перформънс, да не излизам от рамката на матрицата. 

0
16/06/2016 17:16:03
RoYaL avatar RoYaL Trainer 6849 Точки

Не можеш ли да Min()-неш дадения координат и border-а на матрицата и да почнеш от там?

1
vani4ka66 avatar vani4ka66 24 Точки

         Първоначално го бях направила така - 

 

                        int currentRow = evilStartRow  < 0 ? 0: evilStartRow ;
                        intcurrentCol = evilStartCol < 0 ? 0: evilStartCol;

 

 


 

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