Софтуерно Инженерство
Loading...
GoShow avatar GoShow 595 Точки

Интересна и не много лесна задача Warhead

Задачата в интерес на истината днес ме заби. За хората, които започват от 0 ще е доста сложна предполагам, както се оказа и за мен, въпреки,че съм малко по- напред.Тя е от изпит по C#1 миналата година в Телерик.

http://bgcoder.com/Contests/Practice/Index/106#4 - това е линка към нея, мисля че трябва да имате регистрация в bgcoder, за да я отворите. И така аз забих с моето решение на 43 / 100 и безброй изгърмявания откъм време (time limit).

http://dotnetfiddle.net/X3atis - ето и решението ми(на този етап). Ще съм безкрайно благодарен на предложения за оптимизация и всякакви други.

p.s. не исках да отварям авторското решение и тестовете.

 

Тагове:
a_rusenov avatar a_rusenov 1103 Точки

Прекалено много if конструкции ползваш, откъдето ти идва и тайм лимита. Плюс това си създаваш много излишни обхождания като не използваш else.

-Поизчисти го като вкараш switch конструкция за операциите

-Можеш да махнеш този лист с outputs, без значение е за БГкодера в каква последователност ги изкарваш (освен ако на теб не ти пречи)

-При извършване на операция в/у кондензатор, затривай околните единици и самия център след това на 0 (може да му хрумне отново там да провери)

Ето го и моето решение: http://pastebin.com/eVBG2UNX

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

1
GoShow avatar GoShow 595 Точки

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

0
a_rusenov avatar a_rusenov 1103 Точки

Имах предвид, че можеш да изкарваш output по всяко време, дори ако след това има още input. Иначе последователността на output-а трябва да се запази задължително. Това е така, защото БГкодер изкарва резултата в txt документ и оттам сравнява.

1
GoShow avatar GoShow 595 Точки

Благодаря!

0