大题思路是以N作为0,小于N的表示是负数,大于N的表示是正数。最后的出的结果也通过样例了
#include<bits/stdc++.h>
using namespace std;
#define N 100010
int a[110],n,f[2*N];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
f[N-a[i]]=1;
}
f[N]=1;
int ans=0;
for(int i=1;i<=n;i++)
for(int j=2*N;j>=a[i];j--)
if(f[j-a[i]]&&f[j]==0){
f[j]=1;
if(j>N)
ans++;
}
printf("%d",ans);
return 0;
}