online: 18; azi: 59; total: 50514 Manual clasa a xi a - Tehnici de programare - Metoda backtraking

Probleme Rezolvate



Manual clasa a Xi a

Tehnici de programare

Metoda backtraking

Să se genereze toate numerele binare de n cifre care au m cifre de 0 . Indicațe . O soluție este formată din m elemente, un element fiind poziția din nu mar in care se poate g ăsi cifra 0 — exceptând p rima poziție.
# include < iostream >
using namespace std ;
int n, m;
int solutie [ 100 ];
bool utilizat[ 100 ];
void tipar () {
cout << '1' ;
for ( int i = 1 ; i < n; i++) {
if (utilizat[i]) {
cout << '0' ;
} else {
cout << '1' ;
}
}
cout << endl ;
}
void bt ( int k, int cntZero ) {
if ( cntZero == m) {
tipar ();
return ;
}
if (k == n) {
return ;
}
bt (k + 1 , cntZero );
if (k != 0 ) {
utilizat[k] = true ;
bt (k + 1 , cntZero + 1 );
utilizat[k] = false ;
}
}
int main () {
cout << " Introduceti numarul de cifre (n): " ;
cin >> n;
cout << " Introduceti numarul de cifre 0 (m): " ;
cin >> m;
if (n > 0 && m >= 0 && m < n) {
bt ( 0 , 0 );
} else {
cout << "Nu exista solutii pentru aceste valori ale lui n si m." << endl ;
}
return 0 ;
}

Acest program folosește funcția bt () pentru a genera toate numerele binare de n cifre care au m cifre de 0. Funcția tipar() afișează numerele binare generate. Informațiile despre soluție și utilizarea cifrelor 0 sunt stocate în array -uri.
Programul verifică dacă n și m sunt valori valide (0 ≤ m < n ), iar apoi apelează funcția bt () pentru a genera și afișa soluțiile.