项目欧拉413

时间:2013-02-07 13:16:47

标签: algorithm language-agnostic

我正在尝试解决Project Euler's 413rd问题,我认为欧拉试图让我感到困惑。 说实话,这个问题似乎并不复杂,至少如果有人使用蛮力。

但是,虽然我的F函数在参数为'10'时返回正确的'9',但是当N = 10 ^ 3时它返回 413 ...为了基督的缘故,这是问题的索引。

还有其他人遇到过同样的问题吗?对于F(10 ^ 3),可能是相同的数字?我不寻求数值解。

谢谢!

2 个答案:

答案 0 :(得分:4)

使用蛮力解决问题的时间(或为什么你的方法不起作用):

每个号码使用10次操作 10 ^ 19 * 10 = 10 ^ 20次操作。

如果您拥有3Ghz proc和10个内核,并且每个核心可以执行一次操作,则需要

10 ^ 20 /(3 * 10 ^ 9 * 10)秒来解决。

那是大约100年。

我可以确认测试用例正确

答案 1 :(得分:0)

当我的isOneChild(n)函数递归删除数字并在每个级别检查时,我得到413。我得到了正确答案,389。当我改变它以索引到每个子字符串时。

当前导0时,您的解决方案无法正确分支。例如,“00”应分支为“0”和“0”,产生计数2,但您的解决方案仅变为“0”,产生计数1.类似地,“01”仅分支为“1” ,错误地产生0的计数。

最小修复:除了值之外还跟踪字符串。