示例1
输入:
[5,2,3],20
返回值:
4
示例2
输入:
[5,2,3],0
返回值:
0
示例3
输入:
[3,5],2
返回值:
-1
备注:
code:
class Solution {
public:
/**
* 最少货币数
* @param arr int整型vector the array
* @param aim int整型 the target
* @return int整型
*/
int minMoney(vector<int>& arr, int aim) {
// write code here
if(aim==0)
return 0;
sort(arr.begin(),arr.end());
vector<int>dp(aim+1,aim);
dp[0] = 0;
for(auto coin:arr)
{
for(int i=coin;i<=aim;i++)
{
dp[i] = min(dp[i],dp[i-coin]+1);
}
}
return dp[aim] == aim?-1:dp[aim];
}
};