/**
* @file coinSelect.cpp
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2022-06-26
*
* @copyright Copyright (c) 2022
* 凑硬币问题 给定若然面值的硬币 用最少的硬币数凑成总额为n
*/
#include <iostream>
#include <vector>
using namespace std;
int coinChange(vector<int>& coins,int n)
{
//db[i] = x 当目标金额为i时,至少还需要x枚硬币
vector<int> db(n+1,n+1);
db[0] = 0;
for(int i = 0; i <= n; i++)
{
for(int j = 0; j < coins.size(); j++)
{
if(i-coins[j] < 0) continue;
db[i] = min(db[i],1+db[i-coins[j]]);
}
}
return (db[n] == n+1) ? -1:db[n];
}
int main()
{
vector<int> conins = {1,5,11};
int n =coinChange(conins,15);
cout << n << endl;
}
动态规划-凑硬币
最新推荐文章于 2023-11-25 16:42:16 发布