Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE ATESTAT
N INFORMATICA
2014
Cuprins:
Introducere.......................................................... pag. 2
Descrierea aplicaiei ............................................ pag. 3
Exemple............................................................... pag. 4
Descrierea modului de functionare...................... pag. 5
Bibliografie.......................................................... pag. 7
Introducere
Problema calului este o problema de logica care combina si cunostinte de matematica. Este distractiva si iti
pune mintea la lucru. pe langa modul clasic, aceasta problema se poate rezolva si folosind informatica si
limbajul de programare C++.
Descrierea aplicaiei
Se consider o tabl de ah cu n linii i n coloane, unde n = 4k + 1. Liniile acestei
table sunt numerotate de sus n jos ncepnd cu linia 1, iar coloanele sunt numerotate
de la stnga la dreapta ncepnd cu 1. n fiecare dintre cmpurile acestei table se
scrie cte un numr natural din mulimea {1, 2, , n2} dup urmtoarele reguli:
a) se pornete din colul aflat n poziia stnga sus al tablei i se avanseaz utiliznd
sritura calului
b) se merge orizontal ctre dreapta i n continuare, pe chenarul format din primele
dou linii, primele dou coloane, ultimele dou linii i ultimele dou coloane, n sensul
acelor de ceasornic;
c) se efectueaz mai multe tururi ale tablei, pn ce se umple ntregul chenar, fr s
se sar de dou ori n aceeai csu, fr s se sar n afara acestui chenar i fr s
rmn vreun cmp liber;
d) din poziia final n care s-a ajuns, trebuie s fie posibil sritura n colul din
stnga sus al ptratului rmas neacoperit;
e) se continu deplasarea n interiorul ptratului rmas neacoperit, folosind regulile
a), b), c), d) pn ce se ajunge la ptratul interior de latur 1 care va conine
valoarea n2.
Amintim c o sritur a calului const ntr-o deplasare de dou csue pe orizontal
urmat de o deplasare de o csu pe vertical sau ntr-o deplasare de dou csue
pe vertical urmat de o deplasare de o csu pe orizontal. Calul din figura
urmtoare poate ajunge printr-o sritur n oricare dintre cele 8 poziii haurate:
Exemple
De exemplu, pentru n=5, dup un tur al tablei, se obine urmtoarea acoperire parial:
void afis()
{ for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
if(t[i][j]==1)
cout<<"*";
else
cout<<"0";
cout<<endl;
}
}
Subprogramul void afis afiseaza tabla de sah sub forma unei matrice, care este umpluta initial cu 0, si in
locul unde ajunge calul apare simbolul *. Subprogramul va afisa rand cu rand toata matricea.
int main()
{cal(2,2);
int cont=0;
for(int i=0;i<k;i++)
{
cout<<"{ "<<drum[0][i]<<" }-{ "<<drum[1][i]<<" } ";
cont++;
if(cont%5==0)
cout<<endl;
}
}
In programul principal este apelat subprogramul void cal dintr-o pozitie oarecare. De asemenea se afiseaza
toate pozitiile in care ajunge calul sub forma {x}-{y}, x fiind linia si y coloana.
Bibliografie
http://www.infoarena.ro/problema/horse
http://info.mcip.ro/?t=back
http://www.slideshare.net/guest8f8af90/problema-calului-presentation