240 likes | 353 Views
Mino Harry Labirint. Ce urmarim in urma acestui proiect?. Aflarea a cat mai multe despre aceasta metoda Gasirea unei atribuiri in viata practica Luarea unei note bune la informatica. A fost odata ca-n povesti A fost ca niciodata Din rude mari imparatesti,. O regizoare cam beata.
E N D
Mino Harry Labirint Ce urmarim in urma acestui proiect? • Aflarea a cat mai multe despre aceasta metoda • Gasirea unei atribuiri in viata practica • Luarea unei note bune la informatica
A fost odata ca-n povesti A fost ca niciodata Din rude mari imparatesti, O regizoare cam beata...
Aceasta o poveste avea de facut, Ce se petrecea in labirintul de temut. Doua personaje ce deloc nu se potrivesc Doamna a zis, "hai sa le contopesc!"
Pe cel haios
De indata ce s-au intalnit Au stat muti si au clipit Nici ei nu credeau cu putinta O asemenea nesabuinta.
Credeam ca-i filmu meu…ma rog! Sincer sa fiu m-am ratacit! Am tot luat-o stanga, stanga,stanga si nimic…
Eu am luat-o dreapta dreapta dreapta…si tot nimic. Eu vreau sa ajung in mijloc, sa gasesc Pocalul de Foc.
N-am nimic mai bun de facut asa ca voi impartasi cu tine aceast papirus pe care l-am gasit acum mult timp. Poate intelegi tu ceva…
Uau!!! Este tehnica de mult pierduta. Tehnica Backtracking!!! Care genereaza toate solutiile posibile unei probleme ca aceasta.
AADFFBABBNBAAN #include<iostream.h> #include<conio.h> int sol[100][2],l[10][10],m,n,i,j,lin,col; int vizitat(int k, int lin,int col) {int v=0; for(i=1;i<=k;i++) if(sol[i][0]==lin && sol[i][1]==col) v=1; return v; } void tipar(int k,int lin,int col) {cout<<"solutie "<<endl; for(i=1;i<=k-1;i++) cout<<sol[i][0]<<" "<<sol[i][1]<<endl; if(lin==0) cout<<"iesirea prin nord"<<endl; else if(lin==m+1) cout<<"iesirea prin sud"<<endl; else if(col==0) cout<<"iesirea prin vest"<<endl; else cout<<"iesirea prin est"<<endl; } void back(int k, int lin, int col) { if(lin==0 ||lin==m+1 || col==0 ||col==n+1) tipar(k,lin,col); else{ sol[k][0]=lin; sol[k][1]=col; for(int i=1;i<=4;i++) switch(i) {case 1: if(l[lin][col] &8&& !vizitat(k,lin-1,col)) back(k+1,lin-1,col); break; case 2: if(l[lin][col]&4 &&! vizitat(k,lin,col+1)) back(k+1,lin,col+1); break; case 3: if(l[lin][col] && ! vizitat(k,lin+1,col)); back(k+1,lin+1,col); break; case 4: if(l[lin][col]&1&& ! vizitat(k,lin,col-1)) back(k+1,lin,col-1); break; } } } Backtracking kaskmvuveom main() {cout<<"M="; cin>>m; cout<<"N="; cin>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) {cout<<"l["<<i<<","<<j<<"]="; cin>>l[i][j]; } cout<<"linie="; cin>>lin; cout<<"coloana="; cin>>col; back(1,lin,col); getch(); } edacfdc hcYO[ab Program.exe Kafmcvk,,,,dfin
Minotaur sa fi sa nu intelegi… Sa ne uitam cu atentie la schema labirintului. Observam ca peretii si drumul sunt inlocuite de numere
1 0 0 1 9=1001 Nord Est Vest Sud Fiecare numar este un set de 4 cifre in baza 2! 1 ne indica faptul ca e un perete, iar 0 ca este drum liber.
Acum ca am inteles cum functioneaza, putem genera solutii pana cand ajungem la destinatie.
Daca vrei sa treci de mine va trebui sa-mi raspunzi la urmatoarea intrebare: Zeii vor sa afle cum te-a ajutat aceast papirus, Potter?
Am aflat ca tehnica are intrebuintare si in viata reala. Am inteles cum functioneaza tehnica mai bine Am generat mai multe solutii false alegand-o in final pe cea buna. Si in caz ca ne vom pierde intr-un labirint vom sti mereu cum sa gasim calea!
Ohoo! Daca a-ti inteles atatea lucruri despre tehnica zeilor meritati sa treceti de mine(si la informatica)!! :)
In tot acesti ani nu am reusit sa inteleg aceasta tablita! Mersi Potter mai luminat! Acum ca ti-ai gasit Pocalul ne putem intoarce fiecare la filmul lui!
Protagonisti: Si asa a fost descoperita si inteleasa metoda Backtracking care ne bantuie si in zilele noastre ! Ionescu Alla Dinu Alex