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

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

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

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

07.09.2013, 23:40. Просмотров 368. Ответов 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;
}
Выдает такое
Миниатюры
n ферзей не бьют друг друга  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 23:40     n ферзей не бьют друг друга
Посмотрите здесь:

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

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

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

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

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

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

Структуры с указателями друг на друга - C++
Нужно написать программу для создания динамической конструкции из элементов структуры 2х типов (см. схему). Однако для этого нужно...

Два класса, требующих друг друга - C++
Существует два класса, обзовём их MyClassA и MyClassB. Возникла такая вот ситуация: у класса MyClassA есть поле типа vector&lt;MyClassB*&gt;...

Два класса, вызывающие друг друга - C++
У меня есть файл class1.h и файл class2.h внутри класса 1 вызывается класс 2 и наоборот. Но, класс 1 располагается выше и не видит...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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