Чегой-то тихо стало на форуме, скучно... Предлагаю вашему вниманию еще несколько задачек задававшихся в свое время на собеседованиях в Интеле, IBM, и т.д. Может будут полезны будущим соискателям, а те кто сами проводят собеседования могут взять их на вооружение.
Сразу предупреждаю, что задачи не на знание языка/умение программировать, а на создание эффективных алгоритмов решения - писать код в них обычно не нужно. Ну и, разумеется, решения ко всем задачам можно найти в и-нете, если кто сам не осилит.
Задача 2:
У вас имеется 100-этажный дом и два яйца (куриных). На каждом этаже дома есть окно, из которого можно эти яйца бросить на прохожих. Известно что яйцо разбивается при падении, начиная с определенной высоты бросания. Т.е. если оно сброшено с высоты Х или больше, то яйцо разбивается, если с высоты меньше Х - остается целым.
Нужно придумать алгоритм, позволяющий, имея только два яйца, определить этаж, начиная с которого яйца бьются, за наименьшее число попыток.
Важно:
- если после падения яйцо осталось целым, его можно поднять и бросить снова.
- сложность алгоритма определяется худшим случаем, т.е. случаем при котором алгоритм требует наибольшее число шагов.
Пример:
Пусть будет такой алгоритм - кидаем яйцо с первого этажа: если оно разбилось - ответ найден; если осталось целым - подбираем и кидаем со второго. И т.д. до тех пор пока не разобьется.
При таком алгоритме если яйцо разбивается начиная с первого этажа, то ответ будет найден за 1 попытку (лучший случай), однако если оно разбивается начиная с 100-го, то нам потребуется 100 попыток, чтобы придти к ответу. Значит для этого алгоритма МАХ = 100.
Удачи !
Другие задачи:
Задача 1
Задача 3