表示组成 价值需要的最少的货币数
如果目前情况下价值目前最少能由 个货币组成,那么加了一个 价值的商品,就可以由个货币组成
对于每一个物品,从循环一遍,更新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; }