problema sariturii calului

Rezolvarea problemelor de matematica prin realizarea unor programe.
andru95
utilizator
utilizator
Mesaje: 54
Membru din: 16 Noi 2011, 16:59

problema sariturii calului

Mesaj de andru95 » 04 Iun 2013, 19:33

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!

Scrie răspuns
  • Subiecte similare
    Răspunsuri
    Vizualizări
    Ultimul mesaj