我正在尝试解决Project Euler's 413rd问题,我认为欧拉试图让我感到困惑。 说实话,这个问题似乎并不复杂,至少如果有人使用蛮力。
但是,虽然我的F函数在参数为'10'时返回正确的'9',但是当N = 10 ^ 3时它返回 413 ...为了基督的缘故,这是问题的索引。
还有其他人遇到过同样的问题吗?对于F(10 ^ 3),可能是相同的数字?我不寻求数值解。
谢谢!
答案 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的计数。
最小修复:除了值之外还跟踪字符串。