Problema damelor

damele.pptx (662074)        

 

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