您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

生成添加到目标的所有数学表达式组合(Java作业/面试)

生成添加到目标的所有数学表达式组合(Java作业/面试)

我认为没有必要建造一棵树,您应该能够随心所欲地进行计算-您只需要稍微延迟加法和减法即可正确考虑优先级:

static void check(double sum, double prevIoUs, String digits, double target, String expr) {
   if (digits.length() == 0) {
     if (sum + prevIoUs == target) {
       System.out.println(expr + " = " + target);
     }
   } else {
     for (int i = 1; i <= digits.length(); i++) {
       double current = Double.parseDouble(digits.substring(0, i));
       String remaining = digits.substring(i);
       check(sum + prevIoUs, current, remaining, target, expr + " + " + current);
       check(sum, prevIoUs * current, remaining, target, expr + " * " + current);
       check(sum, prevIoUs / current, remaining, target, expr + " / " + current);
       check(sum + prevIoUs, -current, remaining, target, expr + " - " + current);
     }
   }
 }

 static void f(String digits, double target) {
   for (int i = 1; i <= digits.length(); i++) {
     String current = digits.substring(0, i);
     check(0, Double.parseDouble(current), digits.substring(i), target, current);
   }
 }
java 2022/1/1 18:33:18 有401人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶