Sunteți pe pagina 1din 5

Metoda Backtraking

ARANJAMENTE DE n LUATE CTE p


#include<iostream.h> #include<fstream.h> int st[20], n, p;

int ebun (int k) {int i; for(i=1; i<k; i++) if(st[i]==st[k]) return 0; return 1; }

int esol (int k) { if(k==p) return 1; return 0; }

int afis(int k) {int i; for(i=1; i<=k; i++) cout<<st[i]; cout<<endl; }

void back(int k) {int i; for(i=1; i<=n; i++){ st[k]=i; if(ebun(k)) if(esol(k)) afis(k); else back(k+1); } }

int main() { cin>>n; cin>>p; back(1); }

COMBINRI DE n LUATE CTE p


#include<iostream.h> #include<fstream.h> int st[20], n, p;

int ebun (int k) {int i; If(k>1) if(st[k-1]>=st[k]) return 0; return 1; }

int esol (int k) { if(k==p) return 1; return 0; }

int afis(int k) {int i; for(i=1; i<=k; i++) cout<<st[i]; cout<<endl; }

void back (int k) {int i; for(i=1; i<=n; i++){ st[k]=i; if(ebun(k)) if(esol(k)) afis(k); else back(k+1); } }

int main() { cin>>n; cin>>p; back(1); }

PERMUTRI
#include<iostream.h> #include<fstream.h> int st[20], n;

int ebun (int k) {int i; for(i=1; i<k; i++) if(st[i]==st[k]) return 0; return 1; }

int esol (int k) { if(k==n) return 1; return 0; }

int afis(int k) {int i; for(i=1; i<=k; i++) cout<<st[i]; cout<<endl; }

void back (int k) {int i; for(i=1; i<=n; i++){ st[k]=i; if(ebun(k)) if(esol(k)) afis(k); else back(k+1); } }

int main() { cin>>n; back(1); }

PRODUS CARTEZIAN

#include<iostream.h> #include<fstream.h> int st[20], n;

int ebun (int k) { return 1; }

int esol (int k) { if(k==n) return 1; return 0; }

int afis(int k) {int i; for(i=1; i<=k; i++) cout<<st[i]; cout<<endl; }

void back (int k) {int i; for(i=1; i<=n; i++){ st[k]=i; if(ebun(k)) if(esol(k)) afis(k); else back(k+1); } }

int main() { cin>>n; back(1); }

SUBMULIMILE UNEI MULIMI


#include<iostream.h> #include<fstream.h> int st[20], n;

int ebun (int k) { return 1; }

int esol (int k) { if(k==n) return 1; return 0; }

int afis(int k) {int i; cout<<{; for(i=1; i<=k; i++) if (st[i]==1) cout<<i; cout<<\b}; cout<<endl; }

void back (int k) {int i; for(i=0; i<=1; i++){ st[k]=i; if(ebun(k)) if(esol(k)) afis(k); else back(k+1); } }

int main() { cin>>n; back(1); }

S-ar putea să vă placă și