NC126 换钱的最少货币数
这题类似于背包问题
class Solution {
public:
int minMoney(vector<int>& arr, int aim) {
// write code here
int dp[arr.size()+10][aim+10];
arr.insert(arr.begin(), 0);
// for (int i = 1; i <= aim; ++i) dp[i] = 1e9;
// dp[0]=0;
for(int i=0;i<=aim;i++)
{
dp[0][i]=1e9;
}
for(int i=0;i<arr.size();i++)
dp[i][0]=0;
dp[0][0]=0;
for(int i=1;i<arr.size();i++)
{
for(int j=1;j<=aim;j++)
{
if(arr[i]>j)
{
dp[i][j]=dp[i-1][j];
}
else
{
dp[i][j]=min(dp[i-1][j],dp[i][j-arr[i]]+1);
}
}
}
if(dp[arr.size()-1][aim]==1e9) return -1;
return dp[arr.size()-1][aim];
}
};