425
Cerința
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
- - * - * - - - - - - * - * - -
#include <bits/stdc++.h>
using namespace std;
int n , a[11] , p[11] , ok , cnt;
void afis()
{
for(int i = 1 ; i <= n ; ++i)
{
for(int j = 1 ; j <= n ; ++j)
if(a[j] == i) cout << "* ";
else cout << "- ";
cout << endl;
}
cnt++;
}
void back(int ind)
{
for(int i = 1 ; i <= n && cnt == 0; ++i)
{
if(!p[i])
{
ok = 0;
a[ind] = i;
p[i] = 1;
for(int j = 1 ; j < ind; ++j)
if(ind - j == abs(a[ind] - a[j])) ok = 1;
if(ind == n && ok == 0)
afis();
else if(ok == 0) back(ind + 1);
p[i] = 0;
}
}
}
int main()
{
cin >> n;
back(1);
return 0;
}
Comentarii