Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум 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
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


При таких малых k достаточно просто втупую промоделировать процесс сгибания листа. Или вы не можете?

Добавлено:

Что бы понять как моделировать. Лучше всего взять обычный лист и посмотреть на его примере.

Возьмите лист, сложите его k раз по вашему алгоритму (пусть для определённости k будет чётным). Пронумеруйите страницы. В результате мы, по сути, получили массив размера 1х1х2^k заполненный числами. Теперь разверните лист по вертикали. Получился массив размерности 2х1х2^(k-1). Внимательно посмотрите как он получился из предыдщего (половина элементов осталась прежней и на прежних местах, а вторая довольно просто отразилась). Теперь разверните лист по горизонтали. Получился массив 2х2х2^(k-2). Он тоже легко получается по предыдущему (опять, половина элменетов остаётся на своих местах, а вторая отражается). Вот так ваше программа должна разворачивать лист до тех пор пока не останется массив размерности AxBx2. По нему уже можно построить ряд ответа. Не самый эффективный, но очень простой алгоритм.

Моя интуиция подсказывает мне, что существует более простой рекурсиный алгоритм. Но его довольно таки долго выводить. Так что для малых k проще использовать вышеописанную методу.

-------
http://ivank.ru


Отправлено: 18:32, 25-08-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 163
Благодарности: 0

Профиль | Отправить PM | Цитировать


snikers

Я не смог понять, как получить те же результаты....
по разному крутил, но так и не понял в каком углу цифра должна стоять

-------
"Сколь бы сложной ни казалась проблема на первый взгляд, она, если правильно к ней подойти, окажется еще более сложной" - Пол Андерсон


Отправлено: 01:57, 27-08-2004 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » помогите решить задачу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход