文章

40

粉丝

512

获赞

13

访问

375.0k

头像
直接套用01背包的公式就好了
Ang VIP
P1035
发布于2020年3月14日 19:07
阅读数 11.1k

#include<bits/stdc++.h>
using namespace std;
int const maxn = 10000;
int dp[maxn];
int w[maxn];

int main(){
    int s,n;
    while(cin>>s>>n){
        fill(dp,dp+maxn,10000);
        dp[0]=0;
        for(int i=0;i<n;i++){
            cin>>w[i];
        }
        for(int i=0;i<n;i++){
            for(int j=s;j>=w[i];j--){
                if(dp[j-w[i]]!=10000){
                    dp[j]=min(dp[j],dp[j-w[i]]+1);
                }
            }
        }
        if(dp[s]!=10000){
            cout<<"YES"<<endl;
        }else{
            cout<<"NO"<<endl;
        }
    }
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发