Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение прямоугольника квадратами. Задача....Решить не перебором вариантов. 
:(
    Опции темы
IvanB
Дата 12.12.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Задачка такая:
1) Проверить, можно ли заполнить прямоугольник m*n квадратами в количестве k (стороны прямоугольника и квадратов - натуральные числа).
2) Найти наименьшее число квадратов, которыми можно заполнить данный прямоугольник.

Перебором делать - очевидно, но программа будет долго работать...
А как ещё можно, пока не знаю.

P.S. Пишу её на VB, хотя и на других языках понять смогу...


Это сообщение отредактировал(а) IvanB - 12.12.2005, 12:29
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
Snowy
Дата 12.12.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Код

  k:=(m div x) * (n div x);

где x - сторона квадрата.
k - сколько квадратов влезет.

Цитата(IvanB @ 12.12.2005, 12:25)
Найти наименьшее число квадратов, которыми можно заполнить данный прямоугольник.

Наименьшее всегда - 0. Не ошибешься.
PM MAIL   Вверх
Akina
Дата 12.12.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Цитата(IvanB @ 12.12.2005, 13:25)
Перебором делать - очевидно, но программа будет долго работать...

Рекурсией.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Snowy
Дата 12.12.2005, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Цитата(Akina @ 12.12.2005, 12:38)
Рекурсией.

Опять задача коммивояжера.
Это в случае, если квадраты разные.
В алгоритмах Coriolis не очень давно поднимал похожую.
Только у него были прямоугольники и их нужно было вертеть.
PM MAIL   Вверх
Akina
Дата 12.12.2005, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Snowy
Так ведь каждый думает, что это у него эксклюзивная задача, все остальные дурью маются, а поиск по конфе - это для накрутки хинтов и трафика.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
IvanB
Дата 12.12.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Цитата
Рекурсией.

Рекрсия и перебор в данном случае - одно и то же...
Иначе переменное (зависящее от количества квадратов) число циклов задать не выйдет

Цитата
Наименьшее всегда - 0. Не ошибешься.

Наименьшее натуральное.

Цитата
В алгоритмах Coriolis не очень давно поднимал похожую.

Теперь буду разбираться с задачей о рюкзаке....



Добавлено @ 13:31
Цитата(Snowy @ 12.12.2005, 12:32)


  k:=(m div x) * (n div x);

где x - сторона квадрата.
k - сколько квадратов влезет.


Не... это не то... мне заполнить нужно, а не найти максимальное число квадратов данного размера, которое в него влезет.

(Кстати, для примера нахождения минимального заполнения можно взять прямоугольник 5*6

--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
Akina
Дата 12.12.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Цитата(IvanB @ 12.12.2005, 14:28)
Рекрсия и перебор в данном случае - одно и то же...

как все запущено...
Цитата(IvanB @ 12.12.2005, 14:28)
Иначе переменное (зависящее от количества квадратов) число циклов задать не выйдет

нету в рекурсии циклов, НЕТУ! есть условие окончания погружения, включая отсечение. Поэтому рекурсия будет в разы быстрее, особенно если оптимизировать выбор очередного варианта для погружения, что в данном случае элементарно - не больше меньшего.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
IvanB
Дата 12.12.2005, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Сорри... чушь сморозил...


--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.