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

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

Войти
Регистрация
Восстановить пароль
 
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
#1

n ферзей не бьют друг друга - C++

07.09.2013, 23:40. Просмотров 394. Ответов 0
Метки нет (Все метки)

Расставить size ферзей не бьющих друг друга на доске size*size.
Вывести в глобальный массив mass. В mass[i] поместить номер столбца(нумерация с нуля), на который нужно поставить ферзя в i-той строке.
Нужно использовать рекурсию. И функцию attacking(именно в этом виде).
Помогите плз только начал изучать c++ не могу разобраться. Рекурсия вообще тьма.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bool attacking(int x1,int y1,int x2, int y2){
// true если ферзи x1,y1 и x2,y2 бьют друг друга. Координаты с нуля до (size-1).  
return (i1==i2)||(j1==j2)||(i1+j1==i2+j2)||(i1-j1==i2-j2);
 
//пробую ставить ферзя в n-тую строку
void try_Ferz(int n){
 
if (n==size) return;
 
for (int i=0; i<size; i++) {
    bool not_attack=true; // not_attack - true, если новый ферзь не бьет предыдущие.
    for (int j = 0; j <n; j++) {
        if (attacking(n,i,j,mass[j]))
            not_attack=false;
    }
    if (not_attack) {
        mass[n]=i;
        try_Ferz(n+1);
        break;
    }
    if (n==size) return;
    
 
 
    }
return;
}
Выдает такое
0
Миниатюры
n ферзей не бьют друг друга  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос n ферзей не бьют друг друга (C++):

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

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

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

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

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

Проверить есть ли среди ферзей пара бьющих друг друга - C++
Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2013, 23:40
Привет! Вот еще темы с ответами:

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

Сформировать все возможные варианты расстановки ферзей на поле, где они бы не били друг друга - C++
Помогите написать программу, которая сформирует все возможные варианты расстановки m (m&gt;3) ферзей на шахматной доске m х m клеток, при...

Подключение .h файлов друг в друга - C++
Здравствуйте. Появилась такая проблема: есть два .h файла, и они перекликаются содержимым: в одном наследуется класс из другого, а в...

Вложенные в друг друга классы - C++
Есть исходный код: class1.h #pragma once #include &quot;class2.h&quot; class class1 { private: class2* c2; public: ...


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

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

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