rt,题解也有记忆dfs并且和我的差不多,但是我比他少了记录用的f数组,我认为没必要,但是样例却没过,求问这是为什么
#include <bits/stdc++.h>
using namespace std;
int b[25005];
int n, a[105];
bool flag;
void dfs(int x, int d, int l){
for (int i = l; i <= n; ++i)
if (x + a[i] <= a[n] && b[x + a[i]] == 0){
b[x + a[i]] = d;
dfs(x + a[i], d + 1, i);
}
}
int main(){
int T;
cin >> T;
for (int i = 1; i <= T; ++i){
cin >> n;
int ans = n;
for (int j = 1; j <= n; ++j)
cin >> a[j];
sort(a + 1, a + 1 + n);
dfs(0, 0, 1);
for (int j = 1; j <= n; ++j)
if (b[a[j]] > 1) --ans;
cout << ans << endl;
}
return 0;
}