题解 | #最小邮票数#

0-1背包问题,选取邮票,满足总额的条件下求最小的邮票数

#include<iostream>
#include<string>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
int main(){
    int M,N;
    while(cin>>M>>N){
        int v[N];
        for(int i=0;i<N;i++){
            cin>>v[i];
        }
        int dp[M+1] ;
        for (int i = 0; i < M+1; i++) {dp[i] = 0x7fff0000;}
//         memset(&dp,0,M+1);
        dp[0] = 0;
        for(int i=0;i<N;i++){
            for(int j=M;j>=v[i];j--){
                dp[j] = min(dp[j],dp[j-v[i]]+1);
            }
        }
        if(dp[M] == 0x7fff0000)cout<<0<<"\n";
        else {cout<<dp[M]<<"\n";}
    }
}
全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务