Форум программистов, компьютерный форум, киберфорум
Наши страницы

восемь ферзей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти обратную матрицу методом квадратного корня http://www.cyberforum.ru/cpp-beginners/thread216402.html
помогите, пожалуйста.нужно написать прогу на с++ :найти обратную матрицу методом квадратного корня) Дублирование тем запрещено правилами форума (п. 3.4). Не плодите одинаковых тем.
C++ Срочно до завтра! Работы минимум! #include <iostream> #include <vector> #include <string.h> #include <conio.h> using namespace std; int main(int argc, char *argv){ string str = "adlkalsdkmalksdfml kasmflkasmdflkmas... http://www.cyberforum.ru/cpp-beginners/thread216400.html
Исправть код. Срок - до завтра. C++
#include <iostream> using namespace std; struct element { public: element *next; element *pred; int data; }; class Spisok
C++ Метод статистики
Помогите, плиз. Вообщем необходимо зашифровать русский текст по крайней мере из 1000 символов и составить по этому тексту гистограмму распределения. Вообщем нужна 2 поля Memo. В одном будет...
C++ Функция с переменным числом параметров http://www.cyberforum.ru/cpp-beginners/thread216372.html
Написать функцию sum с переменным числом параметров, которая находит сумму заданных обыкновенных дробей. Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с...
C++ Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины В общем, есть две задачи, ух на какую же веселую и ни черта не понятную для меня тему. 1. Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины. 2.... подробнее

Показать сообщение отдельно
minigans
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 1

восемь ферзей - C++

21.12.2010, 00:26. Просмотров 660. Ответов 0
Метки (Все метки)

доброго времени суток
есть классическая задача о восьми ферзях:
Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого

есть код (взятый отсюда http://www.youtube.com/watch?v=bF5d0tiGiJA)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int board[8][8];
 
void setQueen(int i, int j)
{
     for (int x=0; x <8; ++x)
     {
         ++board[x][j];
         ++board[i][x];
         int foo;
         foo = j - i + x;
         if (foo >= 0 && foo <8)
            ++board[x][foo];
         foo = j +i -x;
         if (foo >= 0 && foo <8)
            ++board[x][foo];
     }
     board[i][j] = -1;
}
 
void resetQueen(int i, int j)
{
     for (int x=0; x <8; ++x)
     {
         --board[x][j];
         --board[i][x];
         int foo;
         foo = j - i + x;
         if (foo >= 0 && foo <8)
            --board[x][foo];
         foo = j +i -x;
         if (foo >= 0 && foo <8)
            --board[x][foo];
     }
     board[i][j] = 0;
}
bool tryQueen (int i)
{
     bool result = false;
     for (int j = 0; j <8; ++j)
         {
             if (board[i][j] == 0)
                {
                setQueen(i,j);
                if (i == 7)
                  result = true;
                else
                  {
                       if(!(result = tryQueen(i+1)))
                         resetQueen(i,j);
                  
                  }
         } 
         if (result)
            break;
}
return result;
}                    
 
int main()
{
 for (int i = 0; i < 8; ++i)
     for (int j = 0; j < 8; ++j)
       board[i][j] = 0;
     tryQueen(0);
     for (int i = 0; i < 8; ++i)
     {    
         for (int j = 0; j < 8; ++j)
         {
             if (board[i][j] == -1)
                cout << "Q";
             else
                cout << ""; 
         }
     cout << endl; 
     }
     system("PAUSE");
     return EXIT_SUCCESS;       
}
как его изменить так, чтоб находились все 92 решения?

интернет искал, находил несколько вариантов исходного кода, но не смог разобраться как именно происходит поиск всех решений

данный вариант кода интересен тем что он довольно прост для понимания новичка

буду благодарен за любую помощь

p.s. Bloodshed Dev-C++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.