[C# Sample Exam 13.06] Problem 2. Jedi Galaxy
Здравейте колеги!
Имам поблем с намемирането на оптимизирано решение на тази задача и под оптимизирано имам предвид без нито една излишна итерация.
На кратко това което правя е да намеря диагоналите по, които Иво и злата Сила се движат като използвам формулката от проблема от отвореният курс по Алгоритми - Eight Qeens. След това използвам един бърз while, който да ми намери най-първата клетка от текущият диагонал, която е в матрицата. Правя същото нещо и за двата диагонала. Нататък логиката продължава стандартно с един while, който се движи само по диагонала и в зависимост дали е Иво или злата Сила, събира или унищожава клетките през, които минава.
Проблемът: 0/100 точки в judge. Двата нулеви теста минават. Също така минават и комбинирано.
Моят код дава само грешни отговори. Застраховал съм се да не гърми никъде.
По-рано видях твоето решение. Аз точно това искам да избегна. Да не тръгвам от там където са ми зададени координатите, защото това може да е много извън матрицата.
До колкото разбирам от условието трябва да се обходи целият диагонал независимо къде са подадени координатите. Ами ако те са вътре в матрицата това значи, че трябва да се обходи освен от дадената клетка нагоре, също така и на доло.
Знам, че съм си ослужнил работата, но целта ми е перформънс, да не излизам от рамката на матрицата.
Не можеш ли да Min()-неш дадения координат и border-а на матрицата и да почнеш от там?
Първоначално го бях направила така -
int currentRow = evilStartRow < 0 ? 0: evilStartRow ;
intcurrentCol = evilStartCol < 0 ? 0: evilStartCol;