|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » помогите решить задачу |
|
помогите решить задачу
|
snikers
Сообщения: n/a |
если кто может помогите найти закономерность....
Есть машинка которая печатает страницы книги но перед тем сгибает большой лист бумаги такими вариантами: Сначала она свертывает лист снизу вверх, потом слева направо, потом вновь снизу вверх, и вновь слева направо и т.д. k- раз. причем верхний правый угол листа остается на месте. тоесть страницы с номером 1 и 2 зафиксированы. Нужно найти алгоритм которы при вводе k выдает номера страниц в таком порядке: сначала те которые на первой странице слева направо и снизу вверх, а потом на второй старнице так же: слева направо и снизу вверх...k= максимум 10. и ВОТ пример.. k=1 1,2 k=2 1,4, 2,3 k=3 1,8,4,5, (на 1 стр) 7,2,6,3(на 2 стр) k=4 1,8,16,9, 13,12,4,5 -(на 1), 7,2,10,15,11,14,6,3 и т.д. Пробовал находить через суммы но такая хаотичность расположений что не могу... Может кто сталкивался так прошу помочь...очень нужно.... По- моему задача не из простых (по крайней мере для меня)Не хотелось бы выпрашивать готовую программу потому что это ничего мне не даст, но если у кого есть что-то похожее сделано так please bereznay@mail.ru . Или здесь.... А нет - так хоть идею...Наперед спасибо.... |
|
Отправлено: 17:01, 25-08-2004 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать При таких малых k достаточно просто втупую промоделировать процесс сгибания листа. Или вы не можете?
Добавлено: Что бы понять как моделировать. Лучше всего взять обычный лист и посмотреть на его примере. Возьмите лист, сложите его k раз по вашему алгоритму (пусть для определённости k будет чётным). Пронумеруйите страницы. В результате мы, по сути, получили массив размера 1х1х2^k заполненный числами. Теперь разверните лист по вертикали. Получился массив размерности 2х1х2^(k-1). Внимательно посмотрите как он получился из предыдщего (половина элементов осталась прежней и на прежних местах, а вторая довольно просто отразилась). Теперь разверните лист по горизонтали. Получился массив 2х2х2^(k-2). Он тоже легко получается по предыдущему (опять, половина элменетов остаётся на своих местах, а вторая отражается). Вот так ваше программа должна разворачивать лист до тех пор пока не останется массив размерности AxBx2. По нему уже можно построить ряд ответа. Не самый эффективный, но очень простой алгоритм. Моя интуиция подсказывает мне, что существует более простой рекурсиный алгоритм. Но его довольно таки долго выводить. Так что для малых k проще использовать вышеописанную методу. |
------- Отправлено: 18:32, 25-08-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать snikers
Я не смог понять, как получить те же результаты.... по разному крутил, но так и не понял в каком углу цифра должна стоять |
------- Отправлено: 01:57, 27-08-2004 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите решить задачу | Urann | Программирование и базы данных | 11 | 14-05-2013 11:44 | |
C/C++ - [решено] Помогите решить задачу по С++ | Spl1t | Программирование и базы данных | 301 | 21-12-2011 23:20 | |
Разное - Помогите решить задачу в Excel | Dgonny | Программирование и базы данных | 2 | 16-11-2009 04:11 | |
C/C++ - Помогите решить задачу | zdughi | Программирование и базы данных | 1 | 01-05-2009 06:03 | |
помогите решить задачу | Guest | Программирование и базы данных | 2 | 21-05-2004 11:23 |
|