Fiind dată o tablă de şah de dimensiunea nxn şi un cal în colţul stânga sus al acesteia, se cere să se afişeze toate posibilităţile de mutare a acestei piese de şah astfel încât să treacă o singură dată prin fiecare pătrat al tablei. O soluţie va fi afişată ca o matrice nxn în care sunt numerotate săriturile calului.
#include<fstream.h>
#include<iostream.h>
const int dx[8]={-1,1,2,2,1,-1,-2,-2};
const int dy[8]={-2,-2,-1,1,2,2,1,-1};
int a[10][10],n;
ofstream f(„cal.out”);
void afis()
{ int i,j;
for(i=1;i<=n;i++)
{ for(j=1;j<=n;j++) f<<a[j]<<” „;
f<<endl;
}
f<<endl;
}
int inside(int i,int j)
{
return i>=1 && i<=n && j>=1 && j<=n;
}
void back(int i, int j, int pas)
{ int k,inou,jnou;
a[j]=pas;
if (pas==n*n) afis();
else for(k=0;k<8;k++)
{ inou=i+dx[k];
jnou=j+dy[k];
if (inside(inou,jnou) && a[inou][jnou]==0)
back(inou,jnou,pas+1);
}
a[j]=0;
}
main()
{ cin>>n;;
back(1,1,1);
}
Am tema la informatica pt maine sa caut aceasta problema si sa o inteleg.De gasit,am gasit-o,dar de inteles deloc.Va rog sa imi explicati „babeste” fiecare structura.Va multumesc din suflet pentru intelegere!