#include <bits/stdc++.h>
using namespace std;
int main()
{
int s,n,w[1000];
while(scanf("%d%d",&s,&n)!=EOF)
{
int dp[s+1]= {0};
for(int i=1; i<=n; i++)
scanf("%d",&w[i]);
for(int i=1; i<=n; i++)
for(int j=s; j>=1; j--)
{
if(j>=w[i])
dp[j]=max(dp[j],dp[j-w[i]]+w[i]);
}
if(dp[s]==s)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
SWUSTOJ 32: 简单背包问题
最新推荐文章于 2024-09-05 09:00:00 发布