Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про ладьи и доску (комбинаторика). 
:(
    Опции темы
.talisman
Дата 15.5.2005, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сколькими способами можно расставить n ладей на доске n*n так, чтобы они держали под угрозой все поля доски?

заранее спасибо.
PM MAIL   Вверх
.talisman
Дата 15.5.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



блин, ну вы мне идейку подкиньте, а я напишу код и выложу.
PM MAIL   Вверх
segmentation_fault
Дата 16.5.2005, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну вот наверное самый простой алгоритм:
Перебрать все возможные расстановки n ладей на доске n*n.
Для каждой расстановки проверить если все клетки под боем
если да, то соответственно прибавляешь 1 к количеству искомых расстановок
Нахождение возможных расстановок частный случай проблемы нахождения всех подмножеств определённого множества. В данном случае ты ишеш подмножества размера n в множестве размера n^2. Будешь ето решать лексикографически или по другому дело твоё.
Если одна ладья стоит на клетке (x1, y1), 0<= x1 <= n, 0<= y1 <= n, то любая клетка (x2, y2) где x2=x1 или y2 = y1 будет под боем. Дальше просто находишь все такие клетки для всех n ладей.

PM MAIL   Вверх
chipset
Дата 16.5.2005, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



М
 
Перенесено из C++:Общие вопросы.
Тема не соответствует разделу.
Chipset



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Alastis
Дата 16.5.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

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



В книге Бадда "ООП" (могу выслать если надо) есть учебный пример - задача о восьми ферзях. Очень похоже на твою задачу, посмотри исходник, решение довольно красивое при помощи чистого ООП. Правда пример про конкретную шахматную доску 8 на 8, но немного подумать и переделать и все.
Выкладываю исходник класса Ферзя.


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Queen.txt


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
SoWa
Дата 16.5.2005, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Вот какая0то шахматная теория:
q[i,j]=(i+j) mod 2;


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Akina
Дата 16.5.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Думай вот куда - на доске N*N при расстановке ладей, бьющих ВСЕ поля, ОБЯЗАТЕЛЬНО либо на каждой горизонтали по ладье, либо на каждой вертикали по ладье. Отсюда - расстановок, когда на каждой горизонтали по ладье, N в степени N. Столько же - когда на каждой вертикали. Осталось посчитать и отнять количество дублей - а оно равно количеству расстановок, когда ни одна ладья не бьет другую, т.е. N! (факториал).

Результат - 2*N^N-N!


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

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


Новичок



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

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



Akina, спасибо большое -- это именно то, что нужно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




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


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

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