• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 用数字1,2,3,4,5,6,7,8,9组合计算得到值为100的所有可能

用数字1,2,3,4,5,6,7,8,9组合计算得到值为100的所有可能

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了数字836的基数可能是,英数字 使用可能,赛尔号如何得到数字,成人用品数字组合,组合出最小的数字等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:用数字 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. 按顺序来(1-9),有多少种方式?
  2. 不按顺序来,有多少种方式?

所有数字均只可使用一次。


解决方案1:

document.write(parseInt('2'+'5')*4)

解决方案2:

由于四则运算存在交换律
故无需研究全乱序
基于上述代码对相连数字乱序验证即可
代码正在进行中

解决方案3:

数组遍历可以实现这个需求

解决方案4:

import itertools

def sdyxss(pattern):
    if len(pattern) == 17:
        try:
            e = ''.join(pattern)
            if eval(e) == 100:
                print(e)
        except Exception as e:
            pass
    else:
        x = int(pattern[-1])
        for czf in list('+-*/'):
            pattern.append(czf)
            pattern.append(str(x + 1))
            sdyxss(pattern)
            pattern.pop(-1)
            pattern.pop(-1)
        pattern.append('')
        pattern.append(str(x + 1))
        sdyxss(pattern)
        pattern.pop(-1)
        pattern.pop(-1)

sdyxss(['1'])

最后得到的结果如下:

1+2+3+4+5+6+7+8*9
1+2+3-4+5+6+78+9
1+2+3-4*5+6*7+8*9
1+2+3-45+67+8*9
1+2+3*4-5-6+7+89
1+2+3*4*5/6+78+9
1+2+3*4*56/7-8+9
1+2+34-5+67-8+9
1+2+34*5+6-7-8*9
1+2-3*4+5*6+7+8*9
1+2-3*4-5+6*7+8*9
1+2*3+4+5+67+8+9
1+2*3+4*5-6+7+8*9
1+2*3-4+56/7+89
1+2*3-4-5+6+7+89
1+2*3*4*5/6+7+8*9
1+2*34-56+78+9
1+23-4+5+6+78-9
1+23-4+56+7+8+9
1+23-4+56/7+8*9
1+23-4-5+6+7+8*9
1+23*4+5-6+7-8+9
1+23*4+56/7+8-9
1+23*4-5+6+7+8-9
1+234-56-7-8*9
1+234*5*6/78+9
1+234*5/6-7-89
1-2+3+45+6+7*8-9
1-2+3*4+5+67+8+9
1-2+3*4*5+6*7+8-9
1-2+3*4*5-6+7*8-9
1-2-3+4*5+67+8+9
1-2-3+4*56/7+8*9
1-2-3+45+6*7+8+9
1-2-3+45-6+7*8+9
1-2-3+45-6-7+8*9
1-2-34+56+7+8*9
1-2*3+4*5+6+7+8*9
1-2*3-4+5*6+7+8*9
1-2*3-4-5+6*7+8*9
1-23+4*5+6+7+89
1-23-4+5*6+7+89
1-23-4-5+6*7+89
1*2+3+4*5+6+78-9
1*2+3+45+67-8-9
1*2+3-4+5*6+78-9
1*2+3*4+5-6+78+9
1*2+34+5+6*7+8+9
1*2+34+5-6+7*8+9
1*2+34+5-6-7+8*9
1*2+34+56+7-8+9
1*2+34-56/7+8*9
1*2-3+4+56/7+89
1*2-3+4-5+6+7+89
1*2-3+4*5-6+78+9
1*2*3+4+5+6+7+8*9
1*2*3-4+5+6+78+9
1*2*3-4*5+6*7+8*9
1*2*3-45+67+8*9
1*2*3*4+5+6+7*8+9
1*2*3*4+5+6-7+8*9
1*2*3*4-5-6+78+9
1*2*34+56-7-8-9
1*2/3+4*5/6+7+89
1*23+4+5+67-8+9
1*23+4+56/7*8+9
1*23-4+5-6-7+89
1*23-4-56/7+89
1*23*4-56/7/8+9
1*234+5-67-8*9
1/2*3/4*56+7+8*9
1/2*34-5+6-7+89
1/2/3*456+7+8+9
12+3+4+5-6-7+89
12+3+4-56/7+89
12+3-4+5+67+8+9
12+3*4+5+6+7*8+9
12+3*4+5+6-7+8*9
12+3*4-5-6+78+9
12+3*45+6*7-89
12+34+5*6+7+8+9
12+34-5+6*7+8+9
12+34-5-6+7*8+9
12+34-5-6-7+8*9
12-3+4*5+6+7*8+9
12-3+4*5+6-7+8*9
12-3-4+5-6+7+89
12-3-4+5*6+7*8+9
12-3-4+5*6-7+8*9
12*3-4+5-6+78-9
12*3-4-5-6+7+8*9
12*3-4*5+67+8+9
12/3+4*5-6-7+89
12/3+4*5*6-7-8-9
12/3+4*5*6*7/8-9
12/3/4+5*6+78-9
123+4-5+67-89
123+4*5-6*7+8-9
123+45-67+8-9
123-4-5-6-7+8-9
123-45-67+89

总共101条,应该是没有遗漏的,计算耗时12.777秒。
------------------------以上是按照Quora上的题目题意的解法---------------------------------------
如果1到9可以任意变化顺序耗时很长,当然,我算法很差,不一定剪枝完全了。
以上耗时12.777秒,而1到9的全排列有9!=362880种,则总共大约需要时间4636518秒,54天,太难算了。

有没有大神解决一下全排列的优化算法?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用数字1,2,3,4,5,6,7,8,9组合计算得到值为100的所有可能

相关文章

  • 2017-06-07 Python怎样才能输出csv时设置好索引,以便读取时识别
  • 2017-06-07 自定义域名无法访问,求工程师解答
  • 2017-06-07 以太网没有有效的ip配置请问没有对以太网通信进行封装的python库?
  • 2017-06-07 怎样将SSH开发的WEB项目部署到JBOSS422GA?
  • 2017-06-07 为定义引用??
  • 2017-06-07 redis如何快速查找某个值
  • 2017-06-07 python爬虫python处理文本
  • 2017-06-07 golanggolang解析api返回json问题
  • 2017-06-07 java问题
  • 2017-06-07 使用Python生成二维条形码QRCodes

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 几个phplaravel的问题
    • 多线程在join的时候是依次join的么?
    • python下如何把unicode编码的数据转为utf-8的?
    • python35使用pyinstaller打包报错找不到libpython35muso10等文件求解?
    • VC++怎么用WriteProcessMemory修改内存数据?
    • 关于cxfrestful接口的参数类型问题
    • incorrectregion,pleaseuseup-z2qiniucom
    • 汇编调用MessageBox
    • JSP页面form标签的post请求使用另一个servlet处理如何停留在原来的界面?
    • javaweb服务器如何监听服务器上的sendmail接收到了邮件,或者sendmail收到邮件后能通知web应用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有