美文网首页
算法入门篇——四则运算

算法入门篇——四则运算

作者: 秦枫桀 | 来源:发表于2017-08-31 15:32 被阅读0次

大家小时候可能也玩过“组合车牌号里的 4 个数字最终得到 10”的游戏。

组合的方法是在各个数字之间插入四则运算的运算符组成算式,然后计算算式的结果(某些数位之间可以没有运算符,但最少要插入 1 个 运算符)。

例)

1234 → 1 + 2×3 - 4 = 3         
9876 → 9×87 + 6 = 789
假设组合算式的计算结果为“原数逆序排列”(比如原数为1234, 要求结果为4321),并且算式的运算按照四则运算的顺序进行

问题

求位于 1000~9999,满足上述条件的数。

(目标时间:10分钟)

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

分析

  1. 插入的运算符号,只可能是*乘号(+、-、/或者它们与*的组合,都无法得到4位数)
  2. 因为排除了/除号,所以不用考虑除数是0的情况了
  3. 表达式的值计算,很多语言提供了eval函数

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

实现

js版本:

var op = ["*", ""];
for (i = 1000; i < 10000; i++){
  var c = String(i);
  for (j = 0; j < op.length; j++){
    for (k = 0; k < op.length; k++){
      for (l = 0; l < op.length; l++){
        val = c.charAt(3) + op[j] + c.charAt(2) + op[k] +
              c.charAt(1) + op[l] + c.charAt(0);
        if (val.length > 4){ /* 一定要插入1个运算符 */
          if (i == eval(val)){
            console.log(val + " = " + i);
          }
        }
      }
    }
  }
}

相关文章

  • 算法入门篇——四则运算

    大家小时候可能也玩过“组合车牌号里的 4 个数字最终得到 10”的游戏。 组合的方法是在各个数字之间插入四则运算的...

  • algorithm-pattern

    参考自algorithm-pattern翻译为java代码 入门篇 算法快速入门 数据结构与算法 数据结构是一种数...

  • 每周技术分享第三周(6-8)

    一、 技术 计算器的四则运算算法,前几天在看自己之前写过的一些小项目,看到了大三写的简易计算器,主要是实现四则运算...

  • 数据结构与算法之美

    数据结构与算法之美 开篇词 | 从今天起,跨过“数据结构与算法”这道坎免费 入门篇 (4讲) 01 | 为什么要学...

  • 一节有趣的数学课

    今天上午上数学课的时候,数学老师给我们讲四则运算的定义和简便算法。为了让我们更容易理解和掌握“简便算法”,老...

  • 算法与数据结构网址备忘

    kd-tree算法原理与开源代码实现 详解kd-tree 动态规划入门篇 动态规划进阶篇

  • 前端算法

    标签: 算法 正文 1.位运算 2.两个数不使用四则运算得出和 3.排序 4.动态规划

  • 算法入门篇:简单的排序算法

    很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更加复杂的处理逻...

  • 算法——不用加减乘除做加法

    算法——不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号...

  • 学渣学习《高数》记之极限

    极限 有函数f(x)在点x₀处极限的定义和左,右极限的概念可知: 极限的四则运算法则: 设limₓ₋ₓ₀f(x)=...

网友评论

      本文标题:算法入门篇——四则运算

      本文链接:https://www.haomeiwen.com/subject/ccvqjxtx.html