这里的dp数组是什么意思?
#include<bits/stdc++.h>
using namespace std;
int t;
int a[101];
int dp[25010];
int main() {
scanf("%d",&t);
while (t--) {
int n;
scanf("%d",&n);
for (int i = 1; i <= n ; i ++ ) scanf("%d",a+i);
sort(a+1,a+n+1);
memset(dp,0,sizeof(dp));
dp[0]=1;
int ans = 0;
for (int i = 1 ;i <= n ; i ++ ) {
if (dp[a[i]]) continue;
ans++;
for (int j = a[i];j <= a[n]; j++)
dp[j]|=dp[j-a[i]];
}
cout<<ans<<endl;
}
return 0;
}