online: 1; azi: 41; total: 50496 Manual clasa a xi a - Tehnici de programare - Metoda backtraking

Probleme Rezolvate



Manual clasa a Xi a

Tehnici de programare

Metoda backtraking

Să se generezetoate grupurile de p persoane care se pot forma din n persoane. Informaţiile se citesc dintr-un fişier text unde, pe primul rând, sunt scrise valorile pentru p şi n, despărțite printr-un spațiu, iar pe următoarele rânduri numele persoanelor, câte un nume pe un rând.
# include < iostream >
# include < sstream >
using namespace std ;
int n, p;
string persoane[ 100 ];
string grup[ 100 ];
bool utilizat[ 100 ];
void tipar () {
for ( int i = 0 ; i < p; i++) {
cout << grup[i] << " " ;
}
cout << endl ;
}
void bt ( int k, int start) {
if (k == p) {
tipar ();
return ;
}
for ( int i = start; i < n; i++) {
if (!utilizat[i]) {
grup[k] = persoane[i];
utilizat[i] = true ;
bt (k + 1 , i + 1 );
utilizat[i] = false ;
}
}
}
int main () {
cout << " Introduceti numarul de persoane (n) si marimea grupului (p): " ;
cin >> n >> p;
cin. ignore ();
for ( int i = 0 ; i < n; i++) {
cout << " Introduceti numele persoanei " << i + 1 << ": " ;
getline (cin, persoane[i]);
}
bt ( 0 , 0 );
return 0 ;
}

Acest program folosește funcția bt () pentru a genera toate grupurile posibile de p persoane din n persoane. Funcția tipar() afișează grupurile generate. Informațiile despre persoane sunt stocate în array -uri.