Documente Academic
Documente Profesional
Documente Cultură
Carmen
cl. a XI a A
1
2
3
4
5
6
7
8
Metoda Backtracking
#include <iostream>
using namespace std;
//vom crea o functie pentru afisarea matricei
unsigned int lab[101][101],x,y,n;
in care vom obtine rezultatul
void afisare()
//atat timp cat deplasarea calului
{ ofstream g(tabla.out);
se va realiza in interiorul tablei,adica nu va
for(unsigned int i=1;i<=n;i++)
iesi din tabla(se va deplasa intre patratelul
for(unsigned int j=1;j<=n;j++)g<<sah[i][j]<<" ";
(1,1) si (n,n) si atata timp cat nu a mai trecut
prin
acel loc(in matricea-rezultat,locul in ca nu
g<<endl; g.close();
a fost marcat cu numarul pasului,valoarea
}
ramanand egala cu 0,conditiile sunt indeplinite,
void traseu(unsigned int i,unsigned int j,
iar calul se poate deplasa
unsigned int k)
{
//matricearezultat,initia lavand valoarea tuturor
if(i>=1&&j>=1&&i<=n&&j<=n&&sah[i][j]==0) elementelor egala cu 0,va lua(in cazul in care conditiile
sunt indeplinite)valoarea numarului de ordine al pasului
{
curent(astfel se obtin exact locurile unde va fi mutat calul,
sah[i][j]=k;
in ordine)
if(k==n*n) afisare();
//in cazul in care numar de ordine al mutarii la care ne aflam este egal cu
Numarul total al casutelor tablei,inseamna ca am epuizat toate mutarile
Si am obtinut o varianta de parcurgere a tablei completain acest caz,
Varianta va fi afisata
traseu(i-1,j-2,k+1);
traseu(i-1,j+2,k+1);
traseu(i-2,j-1,k+1);
traseu(i-2,j+1,k+1);
traseu(i+1,j-2,k+1);
traseu(i+1,j+2,k+1);
traseu(i+2,j-1,k+1);
traseu(i+2,j+1,k+1);
}
lab[i][j]=0;
}
int main()
{cin>>n>>x>>y;
traseu(x,y,1);
return 0; }
GREEDY EURISTIC
In cazul problemei noastre,se va utiliza Greedy euristic,
Metoda Backtracking
Metoda Greedy
Genereaza toate
Ofera o rezolvare
solutiile posibile de
rapida,sporind
rezolvare a problemei eficienta programului
Ofera intotdeauna si
solutia corecta
Nu garanteaza
intotdeauna ca
solutia corecta
Nu se revine
Caietul de notite
https://olidej.wikispaces.com/file/view/1
003+Greedy+Euristic.pdf