蓝桥杯砝码称重
作者:
九折_5
,
2023-05-23 14:06:09
,
所有人可见
,
阅读 48
//dp问题,如果不用这个砝码,就可以做到,那么有了这个砝码还可以做到j+w[i],j-w[i],w[i]-1的实现,取决于放在哪边
//类似于背包问题
#include<iostream>
using namespace std;
const int N=1e5+10;
int n;
int w[110];
bool f[110][N];
int sum;
int main(){
cin>>n;
sum=0;
for(int i=1;i<=n;i++){
cin>>w[i];
sum+=w[i];
}
f[0][0]=true;
for(int i=1;i<=n;i++){
for(int j=0;j<=sum;j++){
if(f[i-1][j]){
f[i][j]=true;
f[i][j+w[i]]=true;
if(j>=w[i]){
f[i][j-w[i]]=true;
}
else{
f[i][w[i]-j]=true;
}
}
}
}
int res=0;
for(int i=1;i<=sum;i++){
if(f[n][i]){
res++;
}
}
cout<<res;
return 0;
}