Informatică, întrebare adresată de MihaiCosmin11, 8 ani în urmă

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 larea99
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