Професионална програма
Loading...
ZhPetkov avatar ZhPetkov 45 Точки

06. Letters Combinations - Programming Basics Exam - 18 December 2016 (Time limit)

Здравейте,

При опита ми да реша задача 6 от изпита на 18.12 ми дава 80/100. Не ми минават 2 теста за време.

Бихте ли ми дали съвет, как бих могъл да оптимизирам кода си?

Благодаря предварително.

https://judge.softuni.bg/Contests/Practice/Index/368#5

Решението ми:
https://pastebin.com/GZJEw9Cq

Пробвах решението ми на C#, там минава 100/100.

0
Programming Basics 04/04/2018 01:22:28
MartinBG avatar MartinBG 2887 Точки
Best Answer

Както е отбелязал и колегата fbinnzhivko, основният проблем с Java решението на тази задача е в подготовката и отпечатването на резултатите. Решението със StringBuilder е логичен избор, когато ни се налага да съединяваме множество символи/стрингове, а освен това позволява отпечатването на резултата да се направи наведнъж.

Конкретно за тази задача има и друго възможно решение - използване на char[4], тъй като знаем, че всеки валиден резултат ще има 3 букви + " ". 

В горните решения ще забележиш и една допълнителна оптимизация - преди всеки вложен цикъл има валидация на текущия символ и ако той не е валиден не се изпълняват циклите от по-долни нива. Това помага да се намали общият брой на изпълнените итерации по време на изпълнение на програмата.

0