_152乘积最大子序列.java 1.7 KB
Newer Older
qq_36480062's avatar
c  
qq_36480062 已提交
1 2 3 4 5 6 7
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 *
 */
qq_36480062's avatar
commit  
qq_36480062 已提交
8
public class _152乘积最大子序列 {
qq_36480062's avatar
c  
qq_36480062 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
    public static void main(String[] args) throws ScriptException {
        dfs(0, 0, "");
        System.out.println(Calculation("1+3"));
    }


    static void dfs(int s, int state, String g) throws ScriptException {
        if (s == 9) {
            if (Calculation(g) == 1) {
                System.out.println(g + "=1");
            }
            return;
        }
        for (int i = 0; i <= 9; i++) {
            if (((state >> i) & 1) != 1) {
                state += 1 << i;
                for (int j = 0; j < 4; j++) {
                    if (s == 8) {
                        String t = g;
                        dfs(s + 1, state, g + i);
                        g = t;
                    } else {
                        String t = g;
                        dfs(s + 1, state, g + i + op[j]);
                        g = t;
                    }
                }
            }
        }
    }

    static char[] op = {'+', '-', '*', '/'};

    public static Double Calculation(String formula) {
        Double result = null; //计算结果
        ScriptEngineManager manager = new ScriptEngineManager();  //创建一个ScriptEngineManager对象
        ScriptEngine engine = manager.getEngineByName("js"); //通过ScriptEngineManager获得ScriptEngine对象
        try {
            result = (Double) engine.eval(formula); //用ScriptEngine的eval方法执行脚本
        } catch (ScriptException e) {
            result = Double.NaN;
            return result;
        }
        return result;
    }
qq_36480062's avatar
commit  
qq_36480062 已提交
54
}