[Homework] Multidimensional Arrays, Sets, Dictionaries Problem 9. * Terrorists Win!
Здравейте имам въпрос за една задача давана на изпит Terrorists Win! Давана е на изпит по Java на 7 Януари 2015. Има я и в домашното за многомерни масиви под номер 9. Задачата изглежда лесна, но колкото и да се мъчех да я реша изкарвам маскимум 75 точки и не знам защо. По лошото е, че докато си играх с дебугера и си намерих бъгове, като взех да ги поправям Judge взе да ми дава все по-малко точки :). Та на повече от 75 не можах да ги докарам, а това е втората задача от изпита значи би трябвало да е сравнително лесна. Някой може ли да види къде бъркам. Ето го решението ми:
http://pastebin.com/NV7umZDn
Сега както се вижда това решение няма да работи коректно с повече от една "бомба" в текста. Понеже с if (bombBorderCount == 1) искам да проверя дали съм вътре в бомбата. И като намеря втората граница тя става 2. Значи съм вътре при нечетни стойности. За това пробвах да деля стойността му с оператора % на 2 и ако остатъка е 1 тогава да изпълнявам това в if-a, а не само когато брояча е 1, но тогава Judge взе да ми дава 62 точки.
Двата for цикъла с който се сменят символите извън бомбата съответно пред и зад нея пробвах да ги заменя само с един for цикъл, но с два брояча идиния да върви назад а другия напред. Ето така:
for (int j = i, k = i; j >= i - bombPower && k <= i + bombPower; j--, k++)
но тогава Judgeto взе да ми дава само 50 точки. Та къде точно е проблема. Авторските решения от този изпит все още не са качени.
Взех 100 точки но се наложи да подходя различно. Да изполвам IndexOf вместо да броя колко пъти съм намерил символа '|'. ето го крайния вариант даващ 100 точки в Judge.
http://pastebin.com/aYxKPFwG
Примерно решение от мен:
http://pastebin.com/hJKRxt5L
Минавам през целия стринг - засече ли бомба гърми.