Considerandu-se o tablă de şah de dimansiune nXn, să se determine toate modalitățile de amplasare a n regine pe tabla de şah astfel încat să nu se atace două câte două(două regine se atacă dacă se află pe aceeaşi linie, coloană, sau diagonală).
#include
#include
int n,st30,i,j,nr;
void initializare ()
{ for(i=1;i<=30;i++)
st[i]=0;}
void tiparire (int p)
{nr++;
cout<< "solutia"<
for(i=1;i<=p;i++) {cout<
for (j=1;j<=p;j++)
if (st[i]==j) cout<<"X";
else cout<<"0"; } }
int validare (int p)
{ for(i=1;i<=p-1;i++)
if ( st[p]==st[i] || p-i==abs(st[p]-st[i]) return 0;
return 1; }
void back (int p)
{int val;
for( val=1; val<=n; val++)
{st[p]=val;
if (validare(p))
if(p==n)
tiparire(p);
else back(p+1);}}
int main ()
{nr=0;
initializare ();
back(1);
return 0;}