1到9连续运算求和100

Posted 1128XF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1到9连续运算求和100相关的知识,希望对你有一定的参考价值。

Java实现1到9连续运算的结果值为100


 

  在实现过程中,主要涉及到两个知识点:一是递归算法的运用;二是调用javascript引擎实现字符串的数学运算。在编码之前,首先需要定义三个数组

  •   对于最终拼接字符串数组的定义,在1到9之间添加空元素
  •   把对应空元素的下标建立对应的数组
  •   运算符数组

 

public class SumOneHundred {

    public static String[] base = new String[] { "1", "", "2", "", "3", "", "4", "", "5", "", "6", "", "7", "", "8", "",
            "9" };
    public static int[] index = new int[] { 1, 3, 5, 7, 9, 11, 13, 15 };
    public static String[] operationSymbol = new String[] { "+", "-", "*", "/","" };
    public static ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
    public static int num = 0;

    public static void main(String[] args) throws ScriptException {
        operation();
    }

    public static void operation() throws ScriptException {

        
        
        for (int j = 0; j < operationSymbol.length; j++) {
            base[index[num]] = operationSymbol[j];
            if(num < index.length-1){
                num++;
                operation();
            }else{
                StringBuffer sb = new StringBuffer();
                for(int i = 0; i < base.length; i++){
                     sb.append(base[i]);
                    }
                Double eval = (Double) se.eval(sb.toString());
                if(eval == 100.0){
                    System.out.println(sb.toString());
                }
            }
        }
        num--; //在循环执行完一个运算符赋值流程后,对下标值进行移位

    }

}

  该问题的本质:在1到9之间通过添加不同的运算符,获取最终运算结果为100的表达式。由排列组合的原理,可以得出总共有65536(4^8)种情况,最终的结果也是从中进行筛选。那么接下来的问题就是如何取得所有的排列组合?对于这种层级场景,首先想到的就是通过递归进行实现:递归函数内部实现运算符的循环赋值,递归函数之间实现层级关系(空元素的下标对应的数组的循环)。
  在递归函数内部,最重要的一步操作是num--,每执行完一次运算符循环赋值,则往上升一级,完成所有的排列组合。通过判断num值的大小确定是否循环到最后一个空元素位,进而对字符串进行数学运算,判断结果是否为100。

 

以上是关于1到9连续运算求和100的主要内容,如果未能解决你的问题,请参考以下文章

在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]

excel如何检查一列数字是不是连续

c语言计算一个数q的1次方到n次方的和,而q和n的数量级都是10的9次方,结果取模,怎么减少时间呢

第二章 2.4小节 5-1-3 连续自然数求和

第二章 2.4小节 5-1-3 连续自然数求和

数组求和