1 / 10

Echipa Neamu & Neamu

Echipa Neamu & Neamu. Scuze. Metoda backtracking. Ce este aceasta? Backtracking-ul este o metoda folosita in majoritatea limbajurilor de cod, ce implica generarea solutiilor intr-o ordine bine stabilita. Utilizare In cazul in care solutiile sunt sub forma de vector sau

Download Presentation

Echipa Neamu & Neamu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EchipaNeamu & Neamu Scuze...

  2. Metoda backtracking • Ce este aceasta? Backtracking-ul este o metoda folosita in majoritatea limbajurilor de cod, ce implica generarea solutiilor intr-o ordine bine stabilita. • Utilizare In cazul in care solutiile sunt sub forma de vector sau matrice. Si daca la o anumita problema exista mai multe solutii.

  3. Aplicatii ale metodei intalnim cand dorim sa afisam anumite operatii matemetice cu solutiile sale. Spre exemplu, chestiuni practice ca organizarea unui grup la o masa/incapere sau in echipe mai mici decat cel initial, sau plata unei sume de bani in cat mai multe variante cu valorile detinute. Dar, mai exista si alte situatii in care backtracking-ul este eficient,cum ar fi aranjarea mai multor dame pe o tabla de sah astfel incat sa nu se poata lua, sau chiar si iesirea dintr-un labirint.

  4. La ce ma gandesc? Care ar fi una din rezolvarile la problema calului ce sare pe o tabla de sah.

  5. Enuntul problemei Avand o tabla de sah cu nxn patratele si unul dintre cai pusi in coltul din stanga sus, care sunt mutarile ce trebuiesc facute de aceasta piesa, ca sa treaca o singura data prin fiecare patrat.

  6. Rezolvare • Calul poate face o mutare doar in L, numita si “saritura”. El se poate sari in maxim 8 directii sau minim 2. • Tabla nu prezinta obstacole, mai putin depasirea marginii.

  7. Spre exemplu o soluite ar fi asta...

  8. X X X X X X X X X X X X X X X X X X X X X X X X

  9. Scrierea in cod #include<fstream.h> #include<conio.h> #include<stdlib.h> const int x[8]={-1,-1,1,1,-2,-2,2,2}; const int y[8]={-2,2,-2,2,-1,1,-1,1}; int n,st[1000][2],m[25][25]; void back(int k,int lin,int col) {int linie,coloana,i; if(k==n*n) {for(i=1;i<=k-1;i++) cout<<st[i][0]<<"-"<<st[i][1]<<","; cout<<lin<<"-"<<col<<"."; exit(EXIT_SUCCESS); } else {st[k][0]=lin; st[k][1]=col; for(i=0;i<=7;i++) {linie=lin+x[i]; coloana=col+y[i]; if(linie<=n&&linie>=1&&coloana<=n&&coloana>=1&&m[linie][coloana]==0) {m[linie][coloana]=1; back(k+1,linie,coloana); m[linie][coloana]=0; } } } } main() {cin>>n; m[1][1]=1; back(1,1,1); getch(); } Clik aici pentru executabil

  10. Bibliografie: • Pentru poze : www.google.ro • Manual de informatica clasa a X1-a autori Vlad Hutanu si Tudor Sorin Ce am invatat? • Practicalitatea backtracking-ului in rezolvarea unei probleme. • Poate, in caz ca nu se stia, cum se misca un cal pe o tabla de sah.

More Related