在 Quora 上看到一个问题:Mathematical Puzzles: Can you make 100 out of the digits 1,2,3,4,5,6,7,8,9, in order?
觉得颇有意思,现在问题来了,如何利用计算机实现
用数字
1, 2, 3, 4, 5, 6, 7, 8, 9
组合计算,最终结果为 100
的所有可能?就是能知道有多少种实现方式,想想都很有趣 :D
更新:原想法是不按顺序,评论有提醒和原问题不一样,那就精确下:
- 按顺序来(1-9),有多少种方式?
- 不按顺序来,有多少种方式?
所有数字均只可使用一次。
最后得到的结果如下:
总共101条,应该是没有遗漏的,计算耗时12.777秒。
------------------------以上是按照Quora上的题目题意的解法---------------------------------------
如果1到9可以任意变化顺序耗时很长,当然,我算法很差,不一定剪枝完全了。
以上耗时12.777秒,而1到9的全排列有9!=362880种,则总共大约需要时间4636518秒,54天,太难算了。
有没有大神解决一下全排列的优化算法?