Python 蛮力解决方案为Project Euler问题31返回错误答案
我跟你有麻烦。 正确答案是73682,我的答案是73681。 问题是: 在英国,货币由英镑和便士组成。一般流通的硬币有八种: 1便士、2便士、5便士、10便士、20便士、50便士、1英镑(100便士)和2英镑(200便士) 可以通过以下方式获得2英镑: 1×1+1×50p+2×20p+1×5p+1×2p+3×1p 使用任意数量的硬币可以用多少种不同的方式制造2英镑 我的代码是:Python 蛮力解决方案为Project Euler问题31返回错误答案,python,Python,我跟你有麻烦。 正确答案是73682,我的答案是73681。 问题是: 在英国,货币由英镑和便士组成。一般流通的硬币有八种: 1便士、2便士、5便士、10便士、20便士、50便士、1英镑(100便士)和2英镑(200便士) 可以通过以下方式获得2英镑: 1×1+1×50p+2×20p+1×5p+1×2p+3×1p 使用任意数量的硬币可以用多少种不同的方式制造2英镑 我的代码是: 计数器=0 对于范围(3)内的a: 对于范围(5)内的b: 如果100*a+50*b>200: 打破 对于范围(11)
计数器=0
对于范围(3)内的a:
对于范围(5)内的b:
如果100*a+50*b>200:
打破
对于范围(11)内的c:
如果100*a+50*b+20*c>200:
打破
对于范围(21)内的d:
如果100*a+50*b+20*c+10*d>200:
打破
对于范围(41)内的e:
如果100*a+50*b+20*c+10*d+5*e>200:
打破
对于范围(101)内的f:
如果100 *a+**b+**c++**+****+**f*p>问题是,你的代码不考虑你只有2元硬币的情况。您只需将变量计数器
初始化为1即可解决此问题。您的解决方案关闭1;看起来您只是错过了使用2英镑硬币而不使用其他硬币的情况。要匹配不同的方式,您可以使用itertools
模块,请参见此处:@kaya3是正确的,代码中没有“200*X”。但是,不要为此添加循环,只需在1处开始计数器
,就可以了。顺便说一句,欢迎使用堆栈溢出!查看和。