找零钱
题目:已知一些不同面值的钞票与一个金额,求如何用最少数量的钞票组成该金额,
如果任意数量的已知面值都无法组成该金额,返回-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;
- }
。
-
相关阅读:
管理集群工具之LVS
一文带你了解ServletContext
数字化采购管理系统开发:精细化采购业务流程管理,赋能企业实现“阳光采购”
Nginx:反向代理(示意图+配置)
Bean——IOC(Github上有代码)
【CMake】第2篇 CMake构建.h与.cpp文件
腾讯出来的3年测试经验小伙来面试,他这情况要求18K我该给吗?
【Docker】容器连接到mysql(容器互联 超详细)
Android Glide in RecyclerView,only load visible item when page return,Kotlin
Spring IOC工厂
-
原文地址:https://blog.csdn.net/Shenrunchen/article/details/126486962