我正在尝试解决Project Euler 的第 413 个问题,并且我认为 euler 试图欺骗我。老实说,这个问题似乎并不复杂,至少如果有人使用蛮力的话。
但是,虽然我的 F 函数在参数为 '10' 时返回正确的 '9',但当 N=10^3 时它返回413 ......看在上帝的份上,这是问题的索引。
还有其他人面临同样的问题吗?对于 F(10^3),也许是相同的数字?我不寻求数值解。
谢谢!
我正在尝试解决Project Euler 的第 413 个问题,并且我认为 euler 试图欺骗我。老实说,这个问题似乎并不复杂,至少如果有人使用蛮力的话。
但是,虽然我的 F 函数在参数为 '10' 时返回正确的 '9',但当 N=10^3 时它返回413 ......看在上帝的份上,这是问题的索引。
还有其他人面临同样的问题吗?对于 F(10^3),也许是相同的数字?我不寻求数值解。
谢谢!
是时候使用蛮力解决问题了(或者为什么你的方法不起作用):
每个数字使用 10 次操作需要 10^19 * 10 = 10^20 次操作。
如果您有 3Ghz proc 和 10 个内核,并且每个内核可以执行一项操作,则您需要
10^20/(3*10^9 * 10) 秒求解。
也就是大约 100 年。
我可以确认测试用例正确
当我的 isOneChild(n) 函数递归删除数字并在每个级别检查时,我得到了 413。我得到了正确的答案,389。当我将它更改为索引到每个子字符串时。
当有前导 0 时,您的解决方案不会正确分支。例如,“00”应该分支到“0”和“0”,产生计数 2,但您的解决方案只转到“0”,产生计数 1。同样,“01”只分支到“1” ,错误地产生计数 0。
最小修复:除了值之外还跟踪一个字符串。