表示组成
价值需要的最少的货币数
如果目前情况下价值目前最少能由
个货币组成,那么加了一个
价值的商品,
就可以由
个货币组成
对于每一个物品,从循环一遍,更新dp的值。所有的物品都加入完毕以后,
就是结果。
#include<iostream>
using namespace std;
const int INF = 0x3f3f3f3f;
int main()
{
int n,m;
cin >> n >> m;
int arr[1010],dp[5010]={0};
for(int i = 0 ; i < n ; i++)
{
cin >> arr[i];
}
for(int i = 1 ; i <= m ; i++)
{
dp[i]= INF;
}
for(int i = 0 ; i < n ; i++)//对每个物品进行遍历
{
for(int j = 0 ; j <= m-arr[i] ; j++)//对每个价值进行遍历
{
if(dp[j]!=INF)
{
dp[j+arr[i]] = min(dp[j+arr[i]],dp[j]+1);
}
}
}
if(dp[m]==INF){cout<<"-1"<<endl;}
else cout<<dp[m]<<endl;
return 0;
}
京公网安备 11010502036488号