我的代码如下
#include <bits/stdc++.h>
using namespace std;
int dp[105][100000], w[105], n, m;
int main()
{
cin>>n;
for(int i = 1;i <= n;i++)
{
cin>>w[i];
m += w[i];
}
dp[0][0] = 1;
sort(w + 1, w + n + 1);
reverse(w + 1, w + n + 1);
for(int i = 1;i <= n;i++)
{
for(int j = 0;j <= m;j++)
{
dp[i][j] = (j - w[i] >= 0 && dp[i - 1][j - w[i]] || dp[i - 1][j + w[i]] || dp[i - 1][j]);
}
}
int cnt = 0;
for(int i = 1;i <= m;i++)
{
cnt += dp[n][i];
}
cout<<cnt;
}