假设我们有一个数字N,并且有数量不受限制的1、10和25个货币硬币的硬币。找出我们需要用来精确支付N的最小硬币数目。假设N为14,那么硬币数目将为5,即一个10值硬币和四个1值硬币。
为了解决这个问题,我们必须使用以下步骤-
如果N <10,则返回N个1值硬币
如果N> 9且N <25,则将值除以10,并得到结果,剩余的将使用1值硬币覆盖,加上计数即可得到结果
如果N> 25,则将其除以25,得到结果,当结果<25时,再次对第二点执行相同的任务,依此类推。
#include<iostream> using namespace std; int countMinCoins(int n) { if(n<10) return n; else if(n > 9 && n < 25){ int count = n/10; count += n%10; return count; } else { int count = n/25; return count + countMinCoins(n%25); } } int main() { int n = 88; cout << "所需硬币最少数量: " << countMinCoins(n); }
输出结果
所需硬币最少数量: 7