90 likes | 322 Views
Backtracking - BALL “Rolling all around”. Producers: Butucea Coman Petrovan. Ana. Antonia. Johana. Backtracking. Manipularea timpului. Cel mai fericit om este acela care traieste in prezent....insa trecutul sta la baza unui prezent sigur!.
E N D
Backtracking - BALL “Rolling all around” Producers: Butucea Coman Petrovan Ana Antonia Johana
Backtracking Manipularea timpului Cel mai fericit om este acela care traieste in prezent....insa trecutul sta la baza unui prezent sigur! Spre deosebire de realitatea ce ne inconjoara , backtracking-ul aduce o idee originala la care multi dintre noi visam si anume schimbarea trecutului cu scopul de a aduce un viitor benefic… Backtracking-ul permite reintoarcerea la un nivel inferior pentru rezolvarea solutiei!
De ce problema Bilei?... De ce nu…? Putem asocia principiile acestei probleme cu cele ale vietii cotidiene… Constransi de situatiile dificile ale vietii, invatam sa le depasim urmand anumite drumuri cu un grad mai mic de dificultate.
Problema BILEI Se da un teren sub forma de matrice cu n linii si m coloane. Fiecare element al matricei reprezinta un subteren cu o anumita altitudine data de valoarea retinuta de element(nr. natural). Intr-un astfel de subteren de coordonate (lin,col) se gaseste o bila. Stiind ca bila se poate deplasa in orice portiune de teren aflata la N-E-S-V, de altitudine strict inferioara portiunii pe care se gaseste bila; se cere sa se gaseasca toate posibilitatile ca bila sa paraseasca terenul…
-pentru rezolvarea problemei este necesara utilizarea unei matrici. -elementele matricei sunt preluate dintr-un fisier; -initial bila va sta pe o pozitie (lin,col); -neputandu-se deplasa decat in casutele cu un numar strict inferior, se verifica daca pozitiile N, E, S, V (in aceasta ordine) indeplinesc conditia; -aceasta se repeta pana cand bila poate iesi din labirint. Initial : (2,2) Solutii: (2,2) ; (2,3) ; (2,4) (2,2) ; (2,3) ; (3,3) ; (3,4) ; (2,4) (2,2) ; (2,3) ; (3,3) ; (3,4) (2,2) ; (2,3) ; (3,3) ; (3,4) ; (4,4)
Problema Bilei \ C++ main() {char s[100]; int gd=DETECT, gm; initgraph(&gd,&gm,"C:\\TC\\BGI"); cout<<"m=";cin>>m; cout<<"n=";cin>>n; ifstream f("bilutza.cpp"); for(i=0;i<m;i++) {for(j=0;j<n;j++) {x=i+j; if(x%2==0)setfillstyle(1,BLUE); else setfillstyle(1,CYAN); bar3d(100+r,100+p,r+140,p+140,0,0); f>>t[i][j];itoa(t[i][j],s,10); setcolor(BLACK); settextstyle(5,0,3);outtextxy(r+100,p+100,s); r=r+40; } p=p+40; r=50; } for(i=0;i<m;i++) for(j=0;j<n;j++) f>>t[i][j]; cout<<"lin=";cin>>lin; cout<<"col=";cin>>col; back(1,lin,col); getch(); } #include<fstream.h> #include<conio.h> #include<graphics.h> #include<stdlib.h> int sol[100][3],t[10][10],m,n,i,j,lin,col,p=50,r=50,x,y; void tipar(int k) {cout<<"SOLUTIE "<<endl; for(i=1;i<k;i++) cout<<sol[i][1]<<" "<<sol[i][2]<<endl; } void back(int k,int lin,int col) {if(lin==0||lin==m+1||col==0||col==n+1) tipar(k); else {sol[k][0]=0; sol[k][1]=lin; sol[k][2]=col; while(sol[k][0]<4) {sol[k][0]++; switch(sol[k][0]) {case 1:if(t[lin-1][col]<t[lin][col]) back(k+1,lin-1,col);break; case 2:if(t[lin][col+1]<t[lin][col]) back(k+1,lin,col+1);break; case 3:if(t[lin+1][col]<t[lin][col]) back(k+1,lin+1,col);break; case 4:if(t[lin][col-1]<t[lin][col]) back(k+1,lin,col-1);break; } } } }
BILUTA.EXE Executabil:
Ce am invatat? Ce am castigat prin realizarea proiectului? • Am inteles problema “BILEI” si in ce consta utilizarea backtrackingului pentru realizarea problemei; • Am reusit sa cream o solutie a problemei in grafica in c++; • Am gasit o corelatie intre informatica si viata de zi cu zi; • Am reusit sa petrecem o zi intreaga impreuna reusind sa ne cunoastem mai bine descoperind si laturi amuzante si interesante ale informaticii;
Bibliografie: • http://www.google.ro/images • Manualul de informatica