Răspuns :
#include <bits/stdc++.h>
using namespace std;
int n, x[20];
bool gasit;
bool valid(int k)
{
for(int i = 1 ; i < k ; i ++)
{
if(x[i] == x[k]) return false;
//x[k] != x[i], pentru 1< i < k – sa nu avem doua regine pe aceeasi linie;
if(k - i == abs(x[k] - x[i])) return false;
//k - i != abs(x[k] - x[i]), pentru 1< i < k – sa nu avem doua regine pe //aceeasi diagonala;
}
return true;
}
//afisarea se realizeaza ca la partitile unei multimi
void prelsol(int n)
{
gasit = true;
for(int i = 1 ; i <= n ; i ++)
{
for(int j = 1 ; j <= n ; j ++)
if(x[j] == i) cout << "* ";
else cout << "- ";
cout << "\n";
}
}
void back(int k)
{
for(int i = 1 ; !gasit && i <= n ; i ++)
{
x[k] = i;
if(valid(k))
if(k == n) prelsol(n);
else back(k + 1);
}
}
int main()
{
cin >> n;
back(1);
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că resursele disponibile v-au fost de ajutor. Pentru întrebări sau asistență suplimentară, nu ezitați să ne contactați. Ne bucurăm să vă revedem în curând și vă invităm să ne salvați în lista de site-uri preferate!