Собственно вот задача:
Получить все расстановки восьми ладей на шахматной доске, при которых
ни одна ладья не угрожает другой.
моя попытка решения:
Код:
#include<iostream>
using namespace std;
const int size = 8;
void searchpos (int [],int,int &);
bool searchrep (int [],int,int);
void main()
{
int pos[size],i = 0,p = 0;
searchpos(pos,p,i);
cout << i << endl;
system("pause");
}
void searchpos(int a[],int p,int &i)
{
for (int j = 0;j < size;j++)
if (searchrep(a,j,p))
{
a[p] = j;
searchpos (a,p+1,i);
}
else
if (p == size - 1)
i++;
}
bool searchrep(int a[],int i,int p)
{
for (int j = 0;j < p;j++)
if (a[j] == i)
return 0;
return 1;
}
Проблема в том, что ответ выводится в семь раз больший, чем нужно. Помогите, пожалуйста, разобраться.