126 / 125 / 62
Регистрация: 07.09.2013
Сообщений: 343
1

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

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

Author24 — интернет-сервис помощи студентам
Расставить 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 ферзей не бьют друг друга  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2013, 23:40
Ответы с готовыми решениями:

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

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

Перечислить все расстановки N ферзей на шахматной доске NxX, при которых они не бьют друг друга
Задача: Перечислить все расстановки N ферзей на шахматной доске NxX, при которых они не бьют друг...

Проверить бьют ли друг друга две ладьи
Надо срочно. Ибо скоро спать. Можно просто код, голова не варит разобраться не могу. Все задания...

0
07.09.2013, 23:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2013, 23:40
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru