一个java算法小题,大家帮帮忙

wo111180611 2013-10-31 10:30:11

匪警请拨110,即使手机欠费也可拨通!

为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!

某批警察叔叔正在进行智力训练:

1 2 3 4 5 6 7 8 9 = 110;

请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。

请你利用计算机的优势,帮助警察叔叔快速找到所有答案。

每个答案占一行。形如:

12+34+56+7-8+9
123+4+5+67-89
......

已知的两个答案可以输出,但不计分。

各个答案的前后顺序不重要。
...全文
366 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony4geek 2013-11-01
  • 打赏
  • 举报
回复
居然用js 的想法。很不错。
wo111180611 2013-11-01
  • 打赏
  • 举报
回复
引用 4 楼 zyc13701469860 的回复:
[quote=引用 3 楼 zyc13701469860 的回复:] 1 2 3 4 5 6 7 8 9 = 110; 用递归做 说下我的思路 数字1-8后面可以填+,-,"" 对于数字1 填+相当于2 3 4 5 6 7 8 9=109 填-相当于2 3 4 5 6 7 8 9=111 填""相当于12 3 4 5 6 7 8 9=110 然后递归调用到数字9,求和输出结果
写的有点问题,纠正下 数字1-8后面可以填+,-,"" 对于数字1 填+相当于+2 3 4 5 6 7 8 9=110-1=109 填-相当于-2 3 4 5 6 7 8 9=110-1=109 填""相当于12 3 4 5 6 7 8 9=110 [/quote]我考虑考虑
ghostkngiht 2013-11-01
  • 打赏
  • 举报
回复

    private static void r(int i, String pre) {
        for (String m : new String[]{"+", "-", ""}) {
            if (i == 9) {
                ScriptEngineManager sem = new ScriptEngineManager();
                ScriptEngine jsEngine = sem.getEngineByName("JavaScript");
                try {
                    String rs = jsEngine.eval(pre + m + i).toString();
                    if (rs.equals("110.0")) {
                        System.out.println(pre + m + i + "=110");
                    }
                } catch (ScriptException e) {
                    e.printStackTrace(System.err);
                }
            } else {
                r(i + 1, pre + m + i);
            }
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        r(2, "1");
    }
1+2+34+5+67-8+9=110 1+234-56-78+9=110 1-2+3+45-6+78-9=110 12+3+45+67-8-9=110 12+34+56+7-8+9=110 12-3+4-5+6+7+89=110 123+4+5+67-89=110 123+4-5-6-7-8+9=110 123-4+5-6-7+8-9=110 123-4-5+6+7-8-9=110
Mourinho 2013-11-01
  • 打赏
  • 举报
回复
引用 3 楼 zyc13701469860 的回复:
1 2 3 4 5 6 7 8 9 = 110; 用递归做 说下我的思路 数字1-8后面可以填+,-,"" 对于数字1 填+相当于2 3 4 5 6 7 8 9=109 填-相当于2 3 4 5 6 7 8 9=111 填""相当于12 3 4 5 6 7 8 9=110 然后递归调用到数字9,求和输出结果
写的有点问题,纠正下 数字1-8后面可以填+,-,"" 对于数字1 填+相当于+2 3 4 5 6 7 8 9=110-1=109 填-相当于-2 3 4 5 6 7 8 9=110-1=109 填""相当于12 3 4 5 6 7 8 9=110
Mourinho 2013-11-01
  • 打赏
  • 举报
回复
1 2 3 4 5 6 7 8 9 = 110; 用递归做 说下我的思路 数字1-8后面可以填+,-,"" 对于数字1 填+相当于2 3 4 5 6 7 8 9=109 填-相当于2 3 4 5 6 7 8 9=111 填""相当于12 3 4 5 6 7 8 9=110 然后递归调用到数字9,求和输出结果

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧