online: 2; azi: 1430; total: 51885 Manual clasa a xi a - Tehnici de programare - Metoda backtraking

Probleme Rezolvate



Manual clasa a Xi a

Tehnici de programare

Metoda backtraking

Se citeşte un număr n care are m cifre. Să se genereze toate numerele, cu cel mult m cifre, care se pot forma cu cifrele numărului iniţial .
# include < iostream >
using namespace std ;
int n;
int m;
int cifre[ 10 ];
int numar [ 10 ];
bool utilizat[ 10 ];
void tipar ( int k) {
for ( int i = 0 ; i < k; i++) {
cout << numar [i];
}
cout << endl ;
}
void bt ( int k) {
if (k > 0 ) {
tipar (k);
}
if (k == m) {
return ;
}
for ( int i = 0 ; i < m; i++) {
if (!utilizat[i]) {
numar [k] = cifre[i];
utilizat[i] = true ;
bt (k + 1 );
utilizat[i] = false ;
}
}
}
int main () {
cout << " Introduceti numarul n (cu m cifre): " ;
cin >> n;
m = 0 ;
while (n > 0 ) {
cifre[m++] = n % 10 ;
n /= 10 ;
}
bt ( 0 );
return 0 ;
}

Acest program citește un număr n cu m cifre și apoi generează toate numerele cu cel mult m cifre, care se pot forma cu cifrele numărului inițial. Programul folosește o funcție de backtracking ( bt () ) pentru a construi numerele și afișează toate combinațiile posibile.