class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 最少货币数
* @param arr int整型vector the array
* @param aim int整型 the target
* @return int整型
*/
int minMoney(vector<int>& arr, int aim) {
//aim代表总容量,arr.size()代表数量,arr[i]表示体积,价值数组初始化为1
int n=arr.size();
int dp[5001];
fill(dp,dp+5001,10001);
dp[0]=0;
for(int i=0;i<n;i++)//这里之所以从0开始是因为arr是从下标0开始记录物品信息的
{
for(int j=arr[i];j<=aim;j++)
{
dp[j]=min(dp[j],dp[j-arr[i]]+1);
}
}
if(dp[aim]==10001)
{
return -1;
}
else{
return dp[aim];
}
}
};

京公网安备 11010502036488号