题目地址:点这里
经典dp,dp[i][j] 代表用前i个物体可以组成重量为j的bool(>0 代笔存在方案)
代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int dp[105][200];
int p[105];
int main()
{
int n;
cin>>n;
int sum=0;
for(int i=0;i<n;i++)
{
cin>>p[i];
p[i]/=100;
sum+=p[i];
}
dp[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=sum;j++)
{
dp[i][j]=dp[i-1][j];
if(j>=p[i-1]) dp[i][j]+=dp[i-1][j-p[i-1]];
}
if(sum%2==1)
{
cout<<"NO"<<endl;
}
else
{
if(dp[n][sum/2]) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}