где границы цикла?Я вот до сих пор не могу вникнуть как он работает
|
Сообщение от miramax
n = 0; while (true) { n++ идём влево на n если в вагоне -n+1 (который мы точно выключали) - свет горит - значит кол-во вагонов return n*2+1 вагон -n - выключаем свет возвращаемся в начальную точку на +n вагонов, в нулевой вагон идём вправо на n вагонов влючаем свет возвращаемся в исходную точку на -n вагонов. } Согласен - вариант, с проверкой нулевого вагона - понятнее |
Я наверное совсем
|
а какие раньше варианты были? Потрогать лампочку?Решения нет?
Добавлено через 10 минут Цитата:
|
|
Мне понравилось решение @miramax. Кратко и понятно. Оптимизировать – смысла нет, в реальной жизни можно в вагоне, например, блевануть, в программировании – поставить другие метки.
|
тем не менее у него квадратичная сложность
|
Неуверен насчет квадратичной, возможно больше.
Но кого это волнует? :D Включай по 10 лампочек за раз и наворачивай круги, раз ты оказался в таком поезде. Если мы говорим о программировании, то, формализовано, у нас двусвязный список и чтобы посчитать вагоны – достаточно сравнивать ссылки/указатели вагонов с линейной сложностью. Нет указателей? Иметь указатель на "текущий" вагон и на "первый" и с линейной сложностью "телепортироваться" из вагона в вагон. |
Часовой пояс GMT +4, время: 12:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.