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

Probleme Rezolvate



Manual clasa a Xi a

Tehnici de programare

Metoda backtraking

Două persoane îşi împart n obiecte. Fiecare obiect are o valoare vi. Să se genereze toate posibilitățile de distribuire a celor n obiecte, între cele două persoane, astfel încât fiecare persoană să primească obiecte, care să aibă aceeaşi valoare totală.
# include < iostream >
using namespace std ;
int n;
int obiecte[ 100 ];
bool utilizat[ 100 ];
int sumaTotala = 0 ;
void tipar ( int sumaP1, int sumaP2) {
if (sumaP1 != sumaP2) {
return ;
}
cout << "Persoana 1: " ;
for ( int i = 0 ; i < n; i++) {
if (utilizat[i]) {
cout << obiecte[i] << " " ;
}
}
cout << endl ;
cout << "Persoana 2: " ;
for ( int i = 0 ; i < n; i++) {
if (!utilizat[i]) {
cout << obiecte[i] << " " ;
}
}
cout << endl << "-----" << endl ;
}
void bt ( int k, int sumaP1, int sumaP2) {
if (k == n) {
tipar (sumaP1, sumaP2);
return ;
}
utilizat[k] = true ;
bt (k + 1 , sumaP1 + obiecte[k], sumaP2);
utilizat[k] = false ;
bt (k + 1 , sumaP1, sumaP2 + obiecte[k]);
}
int main () {
cout << " Introduceti numarul de obiecte (n): " ;
cin >> n;
for ( int i = 0 ; i < n; i++) {
cout << " Introduceti valoarea obiectului " << i + 1 << ": " ;
cin >> obiecte[i];
sumaTotala += obiecte[i];
}
if ( sumaTotala % 2 == 0 ) {
bt ( 0 , 0 , 0 );
} else {
cout << "Nu exista solutii , deoarece suma totala a obiectelor este impara." << endl ;
}
return 0 ;
}

Acest program folosește funcția bt () pentru a genera toate posibilitățile de distribuire a obiectelor între cele două persoane, astfel încât să aibă aceeași valoare totală. Funcția tipar() afișează distribuțiile generate. Informațiile despre obiecte și distribuția acestora sunt stocate în array -uri.
De asemenea, programul verifică dacă suma totală a obiectelor este pară, deoarece doar în acest caz există soluții în care cele două persoane primesc obiecte cu aceeași valoare totală. Dacă suma totală este impară, programul afișează un mesaj care indică lipsa soluțiilor.