欧拉项目31
Project Euler #31
本文关键字:项目 更新时间:2023-10-16
问题描述:
在英国,货币由pound,£和便士,p和组成一般流通硬币有八种:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
可以用下列方法赚2英镑:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
使用任意数量的硬币,有多少种不同的方法可以制造2英镑?
我试图想出我自己的算法,但失败了。所以,我想到了这个(公认的答案)。我尝试在c++中复制它。当我在main()函数的combos()中输入1、2和5时,它会给出正确的答案,但是10返回11,而它应该是12。我的算法有什么问题?
#include <iostream>
#include <cstdlib>
using namespace std;
int coin[] = {1, 2, 5, 10, 20, 50, 100, 200};
/*Amounts entered must be in pence.*/
int combinations(int amount, int size) {
int comboCount = 0;
if(amount > 0) {
if(size >= 0 && amount >= coin[size])
comboCount += combinations(amount - coin[size], size);
if(size > 0) //don't do if size is 0
comboCount += combinations(amount, size-1);
} else if(amount == 0)
comboCount++;
return comboCount;
}
int combos(int amount) {
int i = 0;
//get largest coin that fits
for(i = 7; coin[i] > amount && i >= 0; i--);
return combinations(amount, i);
}
int main() {
cout << "Answer: " << combos(10) << endl;
return 0;
}
好吧,你的代码可能返回11,因为这是正确的答案?
- http://ideone.com/uxv4J
(实际上是注释):对不起,但我只看到1、2和5中的10便士的10种组合:
10p: 0..5*2p + rest*1p : 6 combinations
1x5p + 5p, that is
0..2*2p + rest*1p : 3 combinations
1*5p : 1 combination
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在linux上调试巨大的C++项目
- 在其他文件中创建类时在 c++ 项目中不起作用
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 如何维护资源管理器项目视图中当前可见的项目列表
- 错误-我无法在VS2019中打开新的Qt项目
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗