Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Добавлено через 18 секунд
UP /\
||
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2010, 16:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсия: найти число расстановок N ладей, которые симметричны относительно диагоналей и не бьют друг друга (C++):

Расставить 8 ферзей на шахматной доске 8 на 8, которые не бьют друг друга - C++
Нужно написать программу которая расставляет на шахматной доске 8 ферзей, которые не бьют друг друга. обязательно использование рекурсии,...

Определить бьют ли друг друга шахматные фигуры в заданной позиции - C++
Условие задачи Недавно Петя начал играть в шахматы. Напомним, что в шахматы играют два игрока, у каждого из которых изначально есть по...

На шахматной доске расставлены три фигуры. Определить бьют они друг друга или нет - C++
На шахматной доске расставлены три фигуры. Используя стандартные правила игры узнать бьют они друг друга или нет. Расположение фигур...

Используя стандартные правила шахматной игры, определить бьют фигуры друг друга или нет - C++
На шахматной доске расставлены три фигуры. Используя стандартные правила шахматной игры, определить бьют они друг друга или нет....

Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 - C++
Не могу понять, почему не делается проверка числа на простоту. #include "StdAfx.h" #include <iostream> #include <cmath> using...

Расположение прямой и отрезка относительно друг друга - C++
Задается уравнение прямой ах+by+c=0,потом задается отрезок. Определить, как расположены они друг относительно друга: отрезок пересекает...

1
Naked
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 18
17.12.2010, 23:41 #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ак ограничить , то что Ладья будет симметрична обеим диагоналем, и как это повлеяет на количество Решений , я не знаю...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2010, 23:41
Привет! Вот еще темы с ответами:

Определить, как расположены треугольники относительно друг друга - C++
Заданы два треугольника координатами своих вершин (х1-6;у1-6), определить, как расположены они друг относительно друга: один внутри...

Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга - C++
Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя...

Как скомпилировать два класса, которые используют методы друг друга - C++
Доброго времени суток. имеется 3 файлика: asteroid.cpp starsystem.cpp main.cpp в main.cpp файлики инкудятся в следующем...

написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если введенное ч - C++
написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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