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

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

Восстановить пароль Регистрация
 
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
07.09.2013, 23:40     n ферзей не бьют друг друга #1
Расставить 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 ферзей не бьют друг друга
Посмотрите здесь:

Два класса, вызывающие друг друга C++
Расставить 8 ферзей на шахматной доске 8 на 8, которые не бьют друг друга C++
C++ Два класса, требующих друг друга
C++ Используя стандартные правила шахматной игры, определить бьют фигуры друг друга или нет
C++ Подключение .h файлов друг в друга
C++ Определение классов ссылающихся друг на друга
В 2х классах указатели друг на друга C++
Структуры с указателями друг на друга C++

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

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

Текущее время: 20:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru