1. Se da n numar natural cu maxim 10 cifre. Afisati toate numerele ce se pot forma cu cifre distincte din n folosind metoda backtracking.(C++)
ex:n=20052 |=>205, 250, 520,.....
2. Se da n numar natural <=15. Afisati toti vectorii de dimensiune n cu elemente din {1,2,...,n} astfel incat numerele sa se repete de maxim 2 ori folosind metoda Backtracking.
ex: n=3 |=> 122, 123, 133, 331,.......
Răspunsuri la întrebare
Răspuns de
0
#include <iostream>
using namespace std;
char sp1[]=" ";
int x1[10], n1, nrsol1=0;
void Afisare()
{ int i;
cout<<sp1;
for(i=1;i<=n1;i++)
cout<<x1[i]<<" ";
cout<<endl;
nrsol1++;
}
int Valid(int k)
{ int i;
for(i=1;i<=k-1;i++)
if (x1[k]==x1[i]) return 0;
return 1;
}
void BackRec1(int k)
{ int i;
for(i=1;i<=n1;i++)
{ x1[k]=i;
if (Valid(k))
if (k==n1) Afisare();
else BackRec1(k+1);
}
}
int main()
{ cout<<endl<<endl<<sp1<<"Permutarile primelor n numere naturale (n<10)"<<endl;
cout<<endl<<sp1<<" Dati valoarea lui n: "; cin>>n1;
cout<<endl;
BackRec1(1);
cout<<endl<<sp1<<"Numar solutii: "<<nrsol1;
return 0;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă