//用一维的滚动数组,f[j]里保存的是f(i-1, j)的值
#include<cstdio>
#include<iostream>
using namespace std;
int f[100010], c, n, m;
int min(int a, int b) {return a < b ? a : b; }
int main()
{
while(cin>>n>>m)
{
if(n==0 && m==0)
break;
for (int j = 1; j < m+1; ++j)
f[j] = 0x7ffffffe;
for (int i = 1; i < n+1; ++i)
{
cin >> c;
for (int j = c; j < m+1; ++j)
f[j] = min(f[j], f[j-c]+1);
}
int i;
for(i = m; f[i] > 100000; i--);
cout << f[i] << endl;
}
return 0;
}
南阳理工OJ_题目995 硬币找零
最新推荐文章于 2018-06-10 21:49:46 发布