168 / 73 / 33
Регистрация: 13.04.2019
Сообщений: 370
1

Все возможные способы расстановки белых фигур

09.11.2020, 18:47. Показов 871. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, имеется задание:
Вывести на экран все возможные способы расстановки белых фигур (два коня, два слона, две ладьи, ферзь и король) на первой линии шахматной доски (без соблюдения обычных правил расстановки).
Мой код рекурсивно перебирает все возможные варианты вывода, но получается в 64 раза больше нужного результата (322560 вместо 5040)
Подскажите, как это исправить
Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
#include <algorithm>
int amount = 0;
using namespace std;
 
void chess(int l, int r, string b[])
{
    string v;
    if (l == r)
    {
        for (int i = 0; i < 8; ++i)
        {
            //cout << b[i] << " ";
        }
        ++amount;
        //cout << endl;
    }
    else
    {
        for (int i = l; i < r; ++i)
        {
            swap(b[l], b[i]);
            chess(l + 1, r, b);
            swap(b[l], b[i]);
        } 
    }
}
 
int main()
{
    const int n = 8;
    string b[n] = {"rook", "knight", "bishop", "queen", "king", "bishop", "knight", "rook"};
    for (int i = 0; i < n; ++i)
    {
        chess(0, n, b);
    }
    cout << amount << endl;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2020, 18:47
Ответы с готовыми решениями:

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

Для заданных N и M нарисовать на экране все возможные расстановки N черных и M белых шаров в один ряд
вот мое условие задачи:Для заданных N и M нарисовать на экране все возможные расстановки N черных и...

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

Получить все возможные расстановки 0 и 1
надо получить все возможные расстановки 0 и 1 в числах размером n(4 например) т.е 0000 0001 1010...

3
Заблокирован
09.11.2020, 18:59 2
возможно дело в парных фигурах: Конь1...Конь2 и Конь2...Конь1 одинаковы комбинации
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
09.11.2020, 19:42 3
Цитата Сообщение от Exp2dot7 Посмотреть сообщение
возможно дело в парных фигурах:
Если дело только в этом, получилось бы 8 раз больше...
0
Заблокирован
09.11.2020, 20:19 4
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
28
29
30
31
32
33
34
35
struct fig
{
    int t,b,n;//тип фигуры,парная?,№ в паре
};
fig figs[]={{1,1,0},{1,1,1},{2,1,0},{2,1,1},{3,1,0},{3,1,1},{4,0,0},{5,0,0}};
int l[8]={0};//линия
int N=0;//к-во расстановок
void chess(int n)
{
    for(int i=0; i<8; i++)
        if(!l[i])
        {
            int set=1;
            if(figs[n].b && figs[n].n)
                for(int j=0; j<8; j++)
                    if(figs[n].t==l[j] && j>i)
                    {
                        set=0;
                        break;
                    }
            if(set)
            {
                l[i]=figs[n].t;
                if(n<7) chess(n+1);
                else N++;
                l[i]=0;
            }
        }
}
void main()
{
    chess(0);
    cout<<N<<endl;
    system("pause");
}
1
09.11.2020, 20:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2020, 20:19
Помогаю со студенческими работами здесь

Все возможные комбинации из 8 белых и 8 черных шаров
нужна программа выводящая все комбинации в формате 4*4 помогите пожалуйста

Создание сайта на Wordpress. Все возможные способы
Доброго времени суток ув. Форумчане. Хочу писать/делать/создавать сайты на Wordpress. Но у меня...

Перебрать все возможные комбинации трех фигур
подскажите как реализовать такое: есть три фигуры - круг,квадрат,треугольник необходимо создать...

GUI Prolog - найти все возможные способы полной упаковки рюкзака
Здравствуйте. Помогите написать программу на прологе. Даны набор элементов багажа разного веса (в...

Определить все возможные ходы для следующих фигур
Даны исходная координата клетки (например, B6), где стоит фигура. Определить все возможные ходы...

Вывести на экран все возможные различные способы представления числа в виде суммы натуральных чисел
Дано натуральное число N. Требуется получить и вывести на экран все возможные различные способы...


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

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

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