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

Задача о 8 ферзях - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Напечатать все строчные русские гласные буквы http://www.cyberforum.ru/cpp-beginners/thread894538.html
Дан текст, за которым следует точка. В алфавитном порядке напечатать все строчные русские гласные буквы (а, е, и, о, у, ы, э, ю, я), входящие в этот текст.
C++ Описание description document В задании к мини-проекту есть пункт "Must contain description document". В первый раз сталкиваюсь, что он должен содержать, есть ли у кого готовые примеры. http://www.cyberforum.ru/cpp-beginners/thread894534.html
шаблон класса вектор C++
На экзамене будет задание: создать шаблонный класс вектор с возможностью вывода информации,помещения информации и обработки информации . Скиньте , кто это уже писал , хотелось бы посмотреть пример ! Буду благодарен.
C++ Задан массив S(N). Определить максимальный и минимальный элементы массива и их номера
Задан массив S(N). Определить максимальный и минимальный элементы массива и их номера. Если таких элементов несколько, то определить сколько их.
C++ Найти сумму элементов с четными индексами и произведение элементов с нечетными индексами http://www.cyberforum.ru/cpp-beginners/thread894511.html
Задан массив S(К). Найти сумму элементов с четными индексами и произведение элементов с нечетными индексами.
C++ Цикл "While". Где ошибка? В некоторой стране используются денежные купюры достоинством 64, 32, 16, 8, 4, 2, 1. Дано натуральное число n. Каким наименьшим количеством таких денежных купюр можно выплатить сумму n (указать количество каждой из используемых для выплаты купюр)? Предполагается, что имеется достаточно большое количество купюр всех достоинств. #include <QTextStream> #include <cmath> int main() { ... подробнее

Показать сообщение отдельно
YoungProgram
 Аватар для YoungProgram
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 17

Задача о 8 ферзях - C++

07.06.2013, 15:42. Просмотров 1473. Ответов 9
Метки (Все метки)

Условие задачи:
Решить задачу о восьми ферзях и вывести в текстовый файл несколько вариантов решения.
Смог сделать только, чтобы программа находила один вариант решения, а как сделать чтобы находило несколько вариантов?
Помогите пожалуйста.
Вот то, что получилось :
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
#include <stdio.h>
#include <iostream.h>
using namespace std;
 
int board[8][8];
 
void setChess(int i, int j)
{
for (int x=0;x<8;x++)
{
++board[x][j];
++board[i][x];
int diag;
diag=j-i+x;
if(diag>=0 && diag<8)
++board[x][diag];
diag = j+i-x;
if(diag>=0 && diag<8)
++board[x][diag];
}
board[i][j] = -1;
}
 
void resetChess(int i, int j)
{
for (int x=0;x<8;x++)
{
--board[x][j];
--board[i][x];
int diag;
diag=j-i+x;
if(diag>=0 && diag<8)
--board[x][diag];
diag = j+i-x;
if(diag>=0 && diag<8)
--board[x][diag];
}
board[i][j] = 0;
}
 
 
bool tryChess(int i)
{
bool result = false;
for(int j=0;j<8;j++)
{
if (board[i][j] == 0)
{ setChess(i, j);
  if (i==7)
  result = true;
  else
  {
  if(!(result = tryChess(i+1)))
  resetChess(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;
tryChess(0);
for(int i=0;i<8;i++)
{
for( int j=0;j<8;j++)
{
if(board[i][j] == -1)
cout<<"Ф";
else cout <<".";
}
cout<< endl;
getchar();
getchar();
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru