找零钱
题目:已知一些不同面值的钞票与一个金额,求如何用最少数量的钞票组成该金额,
如果任意数量的已知面值都无法组成该金额,返回-1
- //找零钱
- //题目:已知一些不同面值的钞票与一个金额,求如何用最少数量的钞票组成该金额,
- //如果任意数量的已知面值都无法组成该金额,返回-1。
- #include
- #include
- using namespace std;
- class Solution
- {
- public:
- int coinChange(vector<int>&coins,int amount)
- {
- //初始化数组dp,存放每个金额的最少钞票数
- //大小为amount+1
- vector<int>dp(amount+1,-1);
- dp[0]=0;
- for(int i=1;i<=amount;i++)
- //变量i依次计算每个金额的最优解
- {
- for(int j=0;j
size();j++) - //对于每个金额i,使用j遍历面值coins数组
- {
- if(coins[j]<=i&&dp[i-coins[j]]!=-1)
- //对于小于等于i的面值coins[j],金额i-coins[j]有最优解
- {
- if(dp[i]==-1||dp[i]>dp[i-coins[j]]+1)
- //如果当前金额还未计算或dp[i]比正在计算的最优解大
- {
- dp[i]=dp[i-coins[j]]+1;//更新dp[i]
- }
- }
- }
- }
- return dp[amount];
- }
- };
- int main()
- {
- int n,v,temp;
- cout<<"请输入面值数量和目标金额:"<
- cin>>n>>v;
- vector<int>coins;
- cout<<"请输入全部面值:"<
- for(int i=0;i
- {
- cin>>temp;
- coins.push_back(temp);
- }
- Solution solution;
- cout<
coinChange(coins,v)< - return 0;
- }
。
-
相关阅读:
接口自动化测试---单接口自动化测试与业务场景自动化测试之间的区别?
数据结构————广度寻路算法 Breadth First Search(广度优先算法)
Flutter开发 - iconfont妙用(手把手教程)
jvm 内存泄露、内存溢出、栈溢出区别
Unity3D学习笔记6——GPU实例化(1)
MySQL篇---第一篇
apply,call,bind的三者异同
vue获取file文件的宽高等属性
软件开发平台流辰信息如何为客户分忧解难?
CENTURY模型可以模拟土壤呼吸吗?CENTURY模型实践技术应用与案例分析
-
原文地址:https://blog.csdn.net/Shenrunchen/article/details/126486962