Đề: Cho một mảng, kiểm tra có dãy con không liên tiếp nào bằng giá trị k không
- Vì sao em thay đổi giá trị 2 biến cnt và dem trong hàm bool thì nó vẫn bằng 0.
- Dòng này là nó thực hiện cả hai cái đúng không ạ lỡ lúc cái bên trái đúng còn cái bên phải sai thì hàm mẹ lấy cái nào ạ.
return subsetsum(arr,k,n-1) || subsetsum(arr,k-arr[n-1], n-1);
Mọi người giải thích giúp em với ạ, em cảm ơn nhiều
Đây là code của e:
#include <iostream>
using namespace std;
#include <vector>
int cnt = 0;
int dem = 0;
bool subsetsum (vector <int> arr, int k, int n) {
dem++;
if (k==0&&cnt!=0) return true;
if (n==0) return false;
cnt++;
if (arr[n-1] > k) return subsetsum(arr,k,n-1);
return subsetsum(arr,k,n-1) || subsetsum(arr,k-arr[n-1], n-1);
}
int main () {
int n;
cin >> n;
vector <int> arr (n);
int k;
cin >> k;
for (int i =0; i < n;i++) {
cin >> arr[i];
}
cout << cnt << " " << dem << endl;
if (subsetsum (arr,k,n) == true) cout << "Co";
else cout << "Khong";
return 0;
}