Se consideră o tablă de șah de dimensiune n. Să se plaseze pe tablă n regine astfel încât să nu existe două regine care să se atace.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran o singură configurație validă a tablei de șah. Ea va fi alcătuită din n linii cu câte n caractere - sau *, separate prin câte un spațiu. Caracterul - reprezintă o poziție liberă de pe tablă, iar caracterul * reprezintă o poziție de pe tablă ocupată de o regină.
Restricții și precizări
4 ≤ n ≤ 10;- două regine se atacă dacă se află pe aceeași linie, aceeași coloană sau aceeași diagonală;
- orice configurație validă a tablei este acceptată.
Exemplu
Intrare
4
Ieșire
- - * - * - - - - - - * - * - -
SOLUTIE
#include <iostream>
#include <cmath>
using namespace std;
int n, sol=0;
double v[100];
void afisare()
{
sol=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(v[i]==j)
cout<<"* ";
else cout<<"- ";
}
cout<<'\n';
}
}
int valid(int k)
{
for(int i=1;i<k;i++)
{
if(v[i]==v[k]||(abs(v[k]-v[i])==(k-i)))
return 0;
}
return 1;
}
int solutie(int k)
{
return k==n;
}
void back(int k)
{
for(int i=1;i<=n;i++)
{
v[k]=i;
if(valid(k))
{
if(solutie(k)&&sol==0)
{
afisare();
}
else back(k+1);
}
}
}
int main()
{
cin>>n;
back(1);
return 0;
}