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