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; }