Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
#1

Рекурсия: найти число расстановок N ладей, которые симметричны относительно диагоналей и не бьют друг друга - C++

17.12.2010, 16:09. Просмотров 729. Ответов 1
Метки нет (Все метки)

Вычислить рекурсивно число расстановок N ладей на доске N*N таких, что ладьи симметричны относительно обеих диагоналей и не бьют друг друга.

Добавлено через 17 часов 27 минут
UP /\
||

Добавлено через 18 секунд
UP /\
||
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2010, 16:09     Рекурсия: найти число расстановок N ладей, которые симметричны относительно диагоналей и не бьют друг друга
Посмотрите здесь:
Расставить 8 ферзей на шахматной доске 8 на 8, которые не бьют друг друга C++
C++ Определить бьют ли друг друга шахматные фигуры в заданной позиции
C++ На шахматной доске расставлены три фигуры. Определить бьют они друг друга или нет
C++ Используя стандартные правила шахматной игры, определить бьют фигуры друг друга или нет
Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 C++
C++ Расположение прямой и отрезка относительно друг друга
C++ Определить, как расположены треугольники относительно друг друга
Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга C++
Как скомпилировать два класса, которые используют методы друг друга C++
написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если введенное ч C++
Найти наименее удаленные друг от друга точки на плоскости C++
Найти элементы массива наименее отличающиеся друг от друга C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Naked
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 18
17.12.2010, 23:41     Рекурсия: найти число расстановок N ладей, которые симметричны относительно диагоналей и не бьют друг друга #2
Цитата Сообщение от Оленька* Посмотреть сообщение
Вычислить рекурсивно число расстановок N ладей на доске N*N таких, что ладьи симметричны относительно обеих диагоналей и не бьют друг друг
Ладья атакуют только по вертикали и по горизонтали, это означает ,что Ладей не может быть больше ,чем n.Расстановка n ладей на n^(2) клеткам доски составляет C(n/n^(2).
Учтем что в каждом столбце может стоять не более одной ладьи поэтому будем представлять поиск решений (a1....,an) следующим образом величина aj будет задавать номер клетки по горизонтали в i-ой вертикали.Таким обрахом, i=1,n, и aj принадлежит {1,2...,n}. Это дает нам n^(n) решений.
Аналогично в каждой строке может стоять не больше одной ладьи.Это означает ,что вектор (a...,an) не может держать одинаковых значений , значит ai неравно aj при i неравном j, следовательно всякое допустимое решение являеться перестановкой чисел от 1 до n.В этом случае необходимо рассмотреть n! решений.

Kак ограничить , то что Ладья будет симметрична обеим диагоналем, и как это повлеяет на количество Решений , я не знаю...
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru