换钱的最少货币数
题目链接
Solution
问n种货币凑成一个面额所需要的最少货币数。
动态规划。
表示凑成面额i的需要的最少货币数。
然后枚举每个面额的货币,更新dp数组即可。
Code
class Solution { public: int minMoney(vector<int>& arr, int aim) { int dp[aim + 5]; dp[0] = 0; for (int i = 1; i <= aim; ++i) dp[i] = 1e9; for (int i = 0; i < (int)arr.size(); ++i) { for (int j = arr[i]; j <= aim; ++j) dp[j] = min(dp[j], dp[j - arr[i]] + 1); } if (dp[aim] == 1e9) return -1; return dp[aim]; } };