package com;
// 题目:给定:123456789 在数字之间加+ 或者 - 或者不运算 ,使其最后的结果为:110 ,求所有的组合的情况;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class test {
public static void main(String[] args){
String s="123456789";
f(s,1);
}
// 计算每次的值; 使用JavaScript 对表达式直接进行运算
public static void show(String s){
ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
double res = 0;
try {
res = (Double)jse.eval(s);
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(res==110){
System.out.println(s+" ="+110);
}
}
//思路:
// 1、第一个数字加+ 或者加 - 或者不加 ,三种情况进行运算
// 2、当到了最后的一个数值的时候就进行计算结果并进行比较
public static void f(String s,int n){
if(n==9){
show(s);
return;
}else{
f(s.replace(n+"", n+"+"),n+1);
f(s.replace(n+"", n+"-"),n+1);
f(s,n+1);
}
}
// static void f1(String s){
// String[] str1=s.split("\\+");
// int sum=0;
// for(int i=0;i<str1.length;i++){
// String[] str2=str1[i].split("\\-");
// int n=Integer.parseInt(str2[0]);
// for(int j=1;j<str2.length;j++){
// n-=Integer.parseInt(str2[j]);
// }
// sum+=n;
// }
// if(sum==110){
// System.out.println(s+" ="+110);
// }
//
// }
}
警察110
最新推荐文章于 2019-03-14 19:38:07 发布