我想在C++中建立递归调用硬币更改。我在互联网上尝试了大部分算法,但它似乎不适用于矢量或者它没有使用硬币的总和。任何人都可以帮助我理解递归函数必须调用什么?所以我的算法没有给我使用的最小数量的硬币,我不知道如何保存使用的硬币。如何在C++中编程递归硬币更改?
int coin(vector<int> denom, int s,int N)
{
if(N == 0)
{
return 1;
}
if(N < 0 || (N > 0 && s < 0))
{
return 0;
}
return min(coin(denom,s - 1, N), 1 + coin(denom, s,N-denom[s-1]));
}
Input a value N:
Input: 40
Input how many denominations:
Input: 3
Denominations #1:
Input: 5
Denominations #2:
Input: 20
Denominations #3:
Input: 30
Output:
Minimum # of coins: 2
Coin used: 20 + 20
Don't want: 30 + 5 + 5
什么是's'和'N'在这方面?你能否明确地定义问题,关于你想达到的目标? –
s是大小,N是数字。我想要这个函数给我最小的#号硬币并且产生使用的硬币的结果 – Darkflame
我在这里没有看到任何数组。 – xaxxon