AcWing 3417. 砝码称重
原题链接
中等
作者:
Dangsi
,
2021-04-30 11:59:46
,
所有人可见
,
阅读 317
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9+7;
const int maxn = 1e5+7;
ll n;
ll a[maxn];
ll b[maxn];
ll sum;
ll dfs(ll i,ll w)
{
if(i==n)
{
if(w<=0)return 0;
b[w]=1;//标记已经得到的重量
return 0;
}
else
{
dfs(i+1,w+a[i]);
dfs(i+1,w-a[i]);
dfs(i+1,w);
}
}
int main()
{
cin>>n;
sum = 0;
for(ll i = 0;i < n;i++)
{
cin>>a[i];
sum+=a[i];
}
dfs(0,0);
ll t = 0;
for(ll i = 0;i <= sum;i++ )
{
if(b[i]==1)
t++;
}
cout<<t<<endl;
}