IPB
ЛогинПароль:

> количество вариантов расположения кораблей на игровом поле, морской бой
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский

Репутация: -  0  +


Помогите, пожалуйста, решить задачу: (задача олимпиадная 10 класс)

на поле размером N*M (1<=N<=10,1<=M<=15) расставляются 4 корабля: однопалубный, 2-палубный,3-палубный и 4-палубный.Корабли могут располагатся вертикально и горизонтально, не соприкасаясь друг с другом углами и границами. Требуется определить количество вариантов расположения кораблей на игровом поле.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Ну, вообще-то этой функции еще надо передавать текущее поле с уже расставленными ранее кораблями.
Оцениваем: (8*13)^4~117000000.
Многовато.
В этих условиях 1 час будет работать программа или 10 - разница существенная. Так что, думаю, во внутреннем цикле от вызова функции лучше отказаться.
Я думаю, все возможные расстановки кораблей (по одному) можно заготовить заранее. 4 вложенных цикла - что ж, пока не предложено лучшего, будем исходить из этого алгоритма. А внутри - вычисление условия единственным выражением.
Поле с находящимися на нем кораблями можно представить 13-ю байтами. Это либо 4 32-разрядных числа, либо 2 регистра ММХ. Собственно, логически умножаем конфигурацию поля на конфигурацию нового корабля, после чего складываем все элемены и сравниваем с 0. Если 0 - корабль поставлен удачно. Т.е. за 7 простых операций получаем ответ, можно разместить корабль или нет. Это намного дешевле вызова функции.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(andriano @ 9.11.2009 20:18) *
Это либо 4 32-разрядных числа, либо 2 регистра ММХ.
andriano неисправим.. Хлебом не корми - дай ускорить асфальтовый каток )). А тебя просили об этом? smile.gif
Вариант без всякой оптимизации (тупой перебор по всем клеткам массива boolean с рекурсией без отсечений) у меня отработал меньше, чем за полминуты (проц 1.8ГГц). Я даже не стал отключать range check.. ))

Ответ получился такой: 64998706.
Я только не уверен, правильно ли будет выкладывать тут код олимпиадной задачи.. LLL, пожалуйста, скажи - что это за олимпиада, где и когда она проходила/проходит? А также скажи, плз, какие в условии ограничения на время и память.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
LLL   количество вариантов расположения кораблей на игровом поле   9.11.2009 16:23
RathaR   Ну для начала, ты ведь сама говоришь о задаче, сле…   9.11.2009 16:41
andriano   На самом деле, раз корабли не могут соприкасаться,…   9.11.2009 17:25
RathaR   А почему бы не пойти "в лоб"... Допустим…   9.11.2009 21:24
andriano   Ну, вообще-то этой функции еще надо передавать тек…   10.11.2009 0:18
Lapp   Это либо 4 32-разрядных числа, либо 2 регистра ММХ…   10.11.2009 9:41
andriano   andriano неисправим.. Хлебом не корми - дай уско…   10.11.2009 13:44
Lapp   Спасибо)) Кстати, я уверен, что отлаживал задачу т…   10.11.2009 14:00
andriano   Спасибо)) Я начал с 4x4 Просто споткнулся об это …   10.11.2009 14:29
Lapp   > только дочитав:понял, то такое возможно. )) н…   10.11.2009 14:53
andriano   Я их рассматривал... скажем так: наполовину. Цик…   10.11.2009 15:20
Lapp   "Минус хвост", если я не ошибаюсь, означ…   10.11.2009 15:33
andriano   Первое.В обще-то, очевидно. Просто на всякий случ…   10.11.2009 15:57
Lapp   Может, как раз выше описанный? Нет, совсем другой …   10.11.2009 16:40
Lapp   Нет, совсем другой :no1: ... Да, пожалуй, можно …   10.11.2009 18:45
RathaR   Отчего же? Помойму если в задаче сказано найти …   10.11.2009 15:34
RathaR   А может всётаки перенесёте тему в раздел задач, к …   10.11.2009 15:14
Lapp   Первый способ (через игровое поле) const n= 10; …   10.11.2009 18:43
Lapp   Подумал, что уже можно открыть в любом случае. Жа…   18.11.2009 19:16


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 3:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name