用数字 1, 2, 3, 4, 5, 6, 7, 8, 9 组合计算得到值为 100 的所有可能
在 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),有多少种方式?
- 不按顺序来,有多少种方式?
所有数字均只可使用一次。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
最后得到的结果如下:
总共101条,应该是没有遗漏的,计算耗时12.777秒。
------------------------以上是按照Quora上的题目题意的解法---------------------------------------
如果1到9可以任意变化顺序耗时很长,当然,我算法很差,不一定剪枝完全了。
以上耗时12.777秒,而1到9的全排列有9!=362880种,则总共大约需要时间4636518秒,54天,太难算了。
有没有大神解决一下全排列的优化算法?
数组遍历可以实现这个需求
由于四则运算存在交换律
故无需研究全乱序
基于上述代码对相连数字乱序验证即可
代码正在进行中
document.write(parseInt('2'+'5')*4)