online_judge_1209

来源:互联网 发布:max守望先锋数据不更新 编辑:程序博客网 时间:2024/06/05 02:20
#include <iostream>#include <limits>using namespace std;int main(){    int m,n;    int a[21];    int dp[101];    int i,j;    while(cin>>m>>n)    {        dp[0] = 0;        for(i=1; i<=m; ++i)        {            dp[i] = numeric_limits<int>::max();        }        for(i=1; i<=n; ++i)        {            cin>>a[i];        }        for(i=1; i<=n; ++i)        {            for(j=m; j>=a[i]; j--)            {                if(dp[j-a[i]]!=numeric_limits<int>::max() && dp[j]>dp[j-a[i]]+1)                {                    dp[j] = dp[j-a[i]] + 1;                }            }        }        if(dp[m] == numeric_limits<int>::max())            cout<<0<<endl;        else            cout<<dp[m]<<endl;    }    return 0;}

 

正好装满的0-1背包问题。。。在dp数组上初始化是很有技巧的……

0 0
原创粉丝点击