Cho tập các số A[] = (a1, a2, …, an). Hãy kiểm tra xem ta có thể chia tập A[] thành hai tập con sao cho tổng các phần tử của hai tập con bằng nhau hay không?
Thỏa mãn ràng buộc:1≤N≤100; 1≤ A[i] ≤100.
void bt(int i, int cur) {
if(cur == sum/2) {
isS = true;
return;
}
if(cur <= sum/2 && i < n && !isS) {
for(int j=0; j<=1; j++) {
bt(i+1, cur + j*a[i]);
}
}
}
- Em dùng quay lui nma O(2^n) bị TLE chạy quá 2s, các anh/chi cho em hỏi có cách nào giải bài này tối ưu hơn không ạ? Em cảm ơn