Поздравления за усилието на всички. Тестовете на задачите са качени в муудъл, ако някой иска да си тества допълнително решението. Кратки решения на задачите:
1) Палиндром - пазите си броя на всяка една буква от низа в масив (с размер 26 елемента), при което ако може да се построи палиндром, то не повече от 1 буква може да се среща нечетен брой пъти (и ако има такава - тя стои по средата на палиндрома)
2) Дървета - двоично търсене по отговора на задачата (между 0 и достатъчно голяма стойност) - в хода на двоичното търсене проверявате дали средния елемент удовлетворява условието на задачата. Трябва да се направят две двоични - съответно за растяща/намаляваща редица
3) Салса - сортирате мъжете и жените в два отделни масива с count sort още при четене и накрая прилагате процедурата от merge sort за сливане на две сортирани последователности,за да намерите търсения резултат.
4) Бързане - обхождане в ширина, при което за всеки наследник на текущо обходения връх присвоявате родител и минимален път до него от първоначалния. Обхождането приключва когато върха N стане текущ. Задачата, разбира се, може и да се реши с модификация на Дейкстра.
5) Минимален път в граф - директно Флойд-Уоршал, след което заявките се изпълняват за константно време.
Поздрави,
Мартин