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

Получить все расстановки 8 ладей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Напишите функцию, которая вычисляет среднее арифметическое элементов массива http://www.cyberforum.ru/cpp-beginners/thread411524.html
Напишите функцию, которая вычисляет среднее арифметическое элементов массива. Массив содержит элементы типа unsigned long long. Массив передается в функцию через два параметра - указатель на первый элемент, и размер массива.  #include <iostream> #include <stdlib.h> using namespace std; unsigned long long sums(unsigned long long* a, int size); void mas_in(unsigned long long* a, int size);...
C++ ... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... Доброго времени суток всем, столкнулся с проблемой по С++,требуется написать программу: которая получает 1)случайное целое типа int, выводит его двоичное представление на экран Это вроде как, делает 1 пункт =) #include<iostream> using namespace std; #include<iomanip> using std::setw; using std::cin; http://www.cyberforum.ru/cpp-beginners/thread411515.html
C++ вывод и запись файлов
Пусть в текстовом файле содержит двумерный массив значений. Считать его и определить сумму додатніх значений и сумму отрицательных значений. Результат занести в отдельный файл
C++ файлы. Дано два файла
дан файла. Записать их в другие два файла, при это м в первый записать четные, а во второй – нечетные числа. Необходимо перевести с tp на С++ var s1,s2,s3:string; f1,f2,f3:text; a,b:integer; begin s1:='file01.txt'; s2:='file02.txt'; s3:='file03.txt';
C++ разработать алгоритм обработки строки символов http://www.cyberforum.ru/cpp-beginners/thread411505.html
разработать алгоритм обработки строки символов которая может содержать буквы английского алфавита, цифры, знаки припинания, пробелы, знаки арифметических операций и скобки. Строку ввести с клавиатуры. Необходимо найти количество вхождений заданного символа в строке. Результат вывести на экран. помогите пожалуйста не могу никак додумать??
C++ непонятное явление при перегрузке умножения в классе матриц ну собсна есть класс class matrix { private: int n, m; double *p; public: matrix(); matrix(int, double = NULL); подробнее

Показать сообщение отдельно
VovaMazur
-12 / 33 / 8
Регистрация: 10.03.2011
Сообщений: 133
19.12.2011, 16:05     Получить все расстановки 8 ладей
Прошу помощи с заданием.

Получить все расстановки 8 тур (рус. Ладья) на шахматной доске, при которых ни одна ладья не угрожает второй. (чистый Си)

Спасибо.

у меня есть только один вариант расстановки

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
 
const int BS = 8;
enum CellState { Free = 0, Queen, UnderAttack };
 
struct ChessBoard
{
 
    ChessBoard()
    {
        for(int r = 0; r < BS; ++r)
            for(int c = 0; c < BS; ++c)
                cells[r][c] = Free;
    }
 
    void placeQueen(int r0, int c0)
    {
        int r, c;
        cells[r0][c0] = Queen;
        for(c = c0 - 1; c >= 0; --c) cells[r0][c] = UnderAttack;
        for(c = c0 + 1; c < BS; ++c) cells[r0][c] = UnderAttack;
        for(r = r0 - 1; r >= 0; --r) cells[r][c0] = UnderAttack;
        for(r = r0 + 1; r < BS; ++r) cells[r][c0] = UnderAttack;
        for(r = r0 - 1, c = c0 - 1; r >= 0 && c >= 0; --r, --c) cells[r][c] = UnderAttack;
        for(r = r0 + 1, c = c0 + 1; r < BS && c < BS; ++r, ++c) cells[r][c] = UnderAttack;
        for(r = r0 - 1, c = c0 + 1; r >= 0 && c < BS; --r, ++c) cells[r][c] = UnderAttack;
        for(r = r0 + 1, c = c0 - 1; r < BS && c >= 0; ++r, --c) cells[r][c] = UnderAttack;
    }
 
    CellState cells[BS][BS];
};
 
void placeQueens(int count, ChessBoard &board)
{
    if(count)
    {
        for(int r = 0; r < BS; ++r)
            for(int c = 0; c < BS; ++c)
                if(!board.cells[r][c])
                {
                   ChessBoard b = board;
                   b.placeQueen(r, c);
                   placeQueens(count - 1, b);
                }
    }
    else
    {
        
        for(int r = 0; r < BS; ++r)
        {
            for(int c = 0; c < BS; ++c) std::cout << ((board.cells[r][c] == Queen) ? "Q " : "* ");
            std::cout << std::endl;
        }
       
        exit(0); 
    }
}
 
int main(int, char *[])
{
    ChessBoard board;
    placeQueens(BS, board);
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru