找零钱
题目:已知一些不同面值的钞票与一个金额,求如何用最少数量的钞票组成该金额,
如果任意数量的已知面值都无法组成该金额,返回-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;
- }
。
-
相关阅读:
软件开发定律:霍夫施塔特定律,为什么项目交付总是会延期?
qsort函数
01 uniapp/微信小程序 项目day01
深入浅出学习透析Nginx服务器的基本原理和配置指南「初级实践篇 」
java APP自动化测试AppIum
EXCEL——根据单元格值设置不同色阶
传输层协议 —— UDP
[附源码]Python计算机毕业设计SSM金牛社区疫情防控系统(程序+LW)
jeecg 重新加载表格
快进来看看!!!C语言——扫雷小游戏(递归展开无雷区)
-
原文地址:https://blog.csdn.net/Shenrunchen/article/details/126486962