我正在尝试进行 Euler number 219项目,但未能掌握它。我正在尝试使用 Python,根据 Euler 项目,它应该能够在一分钟内完成!这让我认为他们不可能希望我计算每个单独的位串,因为这在 Python 中太慢了——必须有一个 sub O(n) 算法。
我查看了一个递归解决方案,它存储位串可能的前缀,以便它可以快速选择一个新的位串,甚至将它们分组考虑。这仅适用于 10 多一点的暴力破解值:
cost(1) = 1
cost(2) = 5
cost(3) = 11
cost(4) = 18
cost(5) = 26
cost(6) = 35
cost(7) = 44
cost(8) = 54
cost(9) = 64
cost(10)= 74
cost(11)= 85
cost(12)= 96
过去,我正在努力理解如何减少问题。总是可以制作出如下模式:
1
01
001
0001
00001
00000
但对于超过 7 个位串来说,它并不是最优的。谁能指导我应该考虑什么?