4
Generarea aranjamentelor #include <iostream> using namespace std; int st[100],n,c; int valid(int p) { int i; for(i=1;i<p;i++) if(st[p]==st[i]) return 0; return 1; } void tipar(int p) { for(int i=1;i<=p;i++) cout<<st[i]<<" "; cout<<endl; } void backt() { int p; p=1; //plecam de la primul nivel st[p]=0; //initializam nivelul cu 0 while (p>0) //cat timp stiva nu este vida { if (st[p]<n ) //mai exista valori neincercate pe nivelul p { st[p]=st[p]+1; // st[p]<-<o noua valoare din multimea valorilor posibile>} if (valid(p) )//daca elementul de pe pozitia p indeplineste conditiile if (p==c)//daca s-a completat stiva tipar(p); //afisam solutia finala else { p=p+1; //trecem la nivelul urmator st[p]=0;//initializam valoarea de pe nivel cu 0 } } else p=p-1; //pas inapoi } } int main()

Backtracking

Embed Size (px)

DESCRIPTION

tt

Citation preview

Generarea aranjamentelor#include

using namespace std;

int st[100],n,c;

int valid(int p)

{ int i;

for(i=1;i