online: 13; azi: 756; total: 51211 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 partiţiile mulţimii A formate din două submulți mi care au suma elementelor egale.
# include < iostream >
void partition_helper ( int A[], int n, int subset1[], int subset2[], int idx , int sum1, int sum2) {
if ( idx == n) {
if (sum1 == sum2) {
std :: cout << "Subset 1: " ;
for ( int i = 0 ; i < sum1; i++) {
std :: cout << subset1[i] << " " ;
}
std :: cout << "\ nSubset 2: " ;
for ( int i = 0 ; i < sum2; i++) {
std :: cout << subset2[i] << " " ;
}
std :: cout << "\n\n" ;
}
return ;
}
subset1[sum1] = A[ idx ];
partition_helper (A, n, subset1, subset2, idx + 1 , sum1 + 1 , sum2);
subset2[sum2] = A[ idx ];
partition_helper (A, n, subset1, subset2, idx + 1 , sum1, sum2 + 1 );
}
void equal_sum_partitions ( int A[], int n) {
int subset1[n], subset2[n];
partition_helper (A, n, subset1, subset2, 0 , 0 , 0 );
}
int main () {
int n;
std :: cout << " Introduceti numarul de elemente: " ;
std ::cin >> n;
int A[n];
std :: cout << " Introduceti elementele: " ;
for ( int i = 0 ; i < n; i++) {
std ::cin >> A[i];
}
equal_sum_partitions (A, n);
return 0 ;
}

Date de intrare:
6
1 2 3 4 5 6