Профил
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 SoftUni Team Trainer 6845 Точки

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

1
vani4ka66 avatar vani4ka66 24 Точки

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

 

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

 

 


 

0