9
Proiect informatica

Proiect informatica

Embed Size (px)

DESCRIPTION

Proiect informatica. Ce s t im despre metoda backtracking. Produs Cartezian. Aranjamente. Permutari. Submultimi. Combinari. Partitii. Valorile vectorului fac parte din multimi finite ale caror elemente se afla intr -o ordine bine stabilita. Aplicatii ale - PowerPoint PPT Presentation

Citation preview

Page 1: Proiect informatica

Proiect informatica

Page 2: Proiect informatica

Ce stim despre metoda backtracking

Aranjamente

PermutariSubmultimi

CombinariPartitii

Produs Cartezian

Metoda backtracking se foloseste in rezolvarea problemelor care

indeplinesc urmatoarele conditii:

Solutia lor poate fi pusa

sub forma unui vector

Valorile vectorului fac parte din

multimi finite ale caror elemente se afla intr-o ordine

bine stabilitaNu se dispune de o alta metoda de rezolvare mai

rapida.

Aplicatii ale metodei backtracking

Page 3: Proiect informatica

Ce vrem sa stim

•Sa stim sa lucram mai bine in echipa

• Sa ne consolidam cunostintele despre Backtracking

Page 4: Proiect informatica

Un spion primeste misiunea de a fura gogosile comandantului unei baze inamice, o misiune strict secreta. Acestea se afla intr-o camera. Pentru a ajunge acolo, spionul nostru trebuie sa se fereasca de paznici, ale caror pozitii au fost descoperite prin satelit. Omul nostru nu poate sa treaca de doua ori prin acelasi loc deoarece acesta lasa urme. El trebuie sa gaseasca cel mai sigur drum pentru a fura gogosile si a se intoarce in siguranta.

Adu-mi gogosile acum, ai inteles?

Da, sa traiti!

Page 5: Proiect informatica

Prezentarea tehnicii

Am notat cu t baza militara şi cu st stiva (st[k][0], st[k][1] reprezintă coordonatele spionului la mutarea cu numărul k, respectiv linia şi coloana ). int t[10][10],st[10][2],i,j,n,xc,yc,xr,yr,k;Condiţiile de continuare sunt date de menţinerea spionului in viata precum şi plasarea lui pe locuri neatinse.void back(int k,int lin,int col){… if(linie<=n&&linie>=1&&coloana<=n&&coloana>=1&&t[linie][coloana]==0) …}Soluţia este gasită în momentul în care spionul ajunge în punctul de unde a plecat, de coordonate xc, yc.int solutie(int k){… if(k>1&&st[k][0]==xc&&st[k][1]==yc&&ok==1) return 1; …} Coordonatele gogosilor (xr, yr) se regăsesc în stivă.Când se ajunge la o soluţie, se afişează conţinutul stivei unde este memorat traseul spionului şi se opreşte execuţia programului.

Page 6: Proiect informatica

>>>>>>>

ifstream f("spion .in");int dx[]={-2,-1,1,2,2,1,-1,-2};int dy[]={1,2,2,1,-1,-2,-2,-1};int t[100][100],st[100][2],i,j,n,xc,yc,xr,yr,k,b[100][100],nr;int solutie(int k){ int ok=0; for(j=1;j<=k;j++) if(st[j][0]==xr&&st[j][1]==yr) ok=1; if(k>1&&st[k][0]==xc&&st[k][1]==yc&&ok==1) return 1; else return 0;}void tipar(int k){ cout<<endl; for(i=1;i<=k-1;i++) { cout<<st[i][0]<<" "<<st[i][1]<<endl; if(st[i][0]==xr&&st[i][1]==yr) b[st[i][0]][st[i][1]]=-i; else b[st[i][0]][st[i][1]]=i; } cout<<endl; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) cout<<setw(3)<<b[i][j]<<' '; cout<<endl; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(b[i][j]!=-1) b[i][j]=0; getch(); nr++; if(nr==5) exit(EXIT_SUCCESS);}

void back(int k,int lin,int col){ int i,linie,coloana; if(solutie(k-1))tipar(k); else{ st[k][0]=lin; st[k][1]=col; for(i=0;i<=7;i++) { linie=lin+dx[i]; coloana=col+dy[i]; if(linie<=n&&linie>=1&&coloana<=n&&coloana>=1&&t[linie][coloana]==0) {t[linie][coloana]=1; back(k+1,linie,coloana); t[linie][coloana]=0; }}}}void main(){ clrscr();f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { f>>t[i][j]; if(t[i][j]) b[i][j]=-1; else b[i][j]=0; } f>>xc>>yc; f>>xr>>yr; f.close(); back(1,xc,yc);}

Page 7: Proiect informatica

Click pentru program

Click Pentru fisier

Page 8: Proiect informatica

Bibliografie:

Manual de informatica (profil real) clasa a XI-a –Vlad Huţanu şi Tudor Sorin, editura L&S Soft 2006Google

Page 9: Proiect informatica

Va multumim!

Bogdan Heimerl Petre Danci Ciprian Vasile