递推的解法
cookiebus
2020-11-05 17:47:29
16
返回题目
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
#define MAXAI 25005
#define MAXN 105
int f[MAXAI];
int a[MAXN];
int main() {
// freopen("money.in","r",stdin);
// freopen("money.out","w",stdout);
int i, j, n, T, ans;
scanf("%d", &T);
while (T--) {
memset(f, 0, sizeof(f));
scanf("%d", &n);
ans = n;
for (i = 1; i <= n; i++) scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
f[0] = 1;
for (i = 1; i <= n; i++) {
if (f[a[i]]) {
ans--;
continue;
}
for (j = a[i]; j <= a[n]; j++) {
f[j] = f[j] | f[j - a[i]];
}
}
printf("%d\n", ans);
}
return 0;
}
{{ vote && vote.total.up }}