目录

1 问题描述

2 解决方案

 


1 问题描述

匪警请拨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
......

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

各个答案的前后顺序不重要。

注意:

请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!

请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

请不要使用package语句。

源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。


2 解决方案

 1 import java.util.Stack;
 2
 3 public class Main {
 4     public static char[] operation = {' ', '+', '-' };
 5
 6     public void check(char[] A) {
 7         StringBuffer s = new StringBuffer("");
 8         for(int i = 1;i <= 8;i++) {
 9             s.append(i);
10             if(A[i - 1] != ' ')
11                 s.append(A[i - 1]);
12         }
13         s.append(9);
14         String t = s.toString();
15         if(t.length() == 9)
16             return;
17         Stack<Integer> r = new Stack<Integer>();
18         Stack<Character> o = new Stack<Character>();
19         for(int i = 0;i < t.length();i++) {
20             if(t.charAt(i) == '+' || t.charAt(i) == '-') {
21                 if(r.size() == 2) {
22                     int a1 = r.pop();
23                     int b1 = r.pop();
24                     char o1 = o.pop();
25                     if(o1 == '+')
26                         r.push(a1 + b1);
27                     else
28                         r.push(b1 - a1);
29                 }
30                 o.push(t.charAt(i));
31                 continue;
32             }
33             int a = 0;
34             while(i < t.length() && t.charAt(i) >= '1' && t.charAt(i) <= '9') {
35                 a = a * 10 + (t.charAt(i) - '0');
36                 i++;
37             }
38             i--;
39             r.push(a);
40         }
41         int a1 = r.pop();
42         int b1 = r.pop();
43         char o1 = o.pop();
44         if(o1 == '+')
45             r.push(a1 + b1);
46         else
47             r.push(b1 - a1);
48         if(r.pop() == 110)
49             System.out.println(t);
50     }
51
52     public void dfs(int step, char[] A) {
53         if(step == 8) {
54             check(A);
55         } else {
56             for(int i = 0;i < 3;i++) {
57                 A[step] = operation[i];
58                 dfs(step + 1, A);
59             }
60         }
61     }
62
63     public static void main(String[] args) {
64         Main test = new Main();
65         char[] A = new char[8];
66         test.dfs(0, A);
67     }
68 }

运行结果:

123+4+5+67-89
123+4-5-6-7-8+9
123-4+5-6-7+8-9
123-4-5+6+7-8-9
12+34+56+7-8+9
12+3+45+67-8-9
12-3+4-5+6+7+89
1+234-56-78+9
1+2+34+5+67-8+9
1-2+3+45-6+78-9

算法笔记_226:填符号凑算式(Java)相关推荐

  1. 算法笔记_029:约瑟夫斯问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 引用自<算法设计与分析基础>第三版: 约瑟夫斯问题,是以弗拉瓦斯.约瑟夫斯(Flavius Josephus)的名字命名的.约瑟夫斯是一 ...

  2. 算法笔记_183:历届试题 九宫重排(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成 ...

  3. 算法笔记_188:历届试题 危险系数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点 ...

  4. 算法笔记_231:网格中移动字母(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着.如图[1.jpg]所示. 和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和 ...

  5. 算法笔记_172:历届试题 波动数列(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度 ...

  6. 蓝桥七届 凑算式 JAVA

    B DEF A + --- + ------- = 10C GHI 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972 ...

  7. 算法笔记_048:找零问题(Java)

    目录 1 问题描述 2 解决方案 2.1 动态规划法   1 问题描述 现需找零金额为n,则最少需要用多少面值为d1 < d2 < d3 < ... < dm的硬币?(PS:假 ...

  8. java 进制转换算法_算法笔记_033:十六进制转八进制(Java)

    packagecom.liuzhen.systemExe;importjava.util.Scanner;public classMain {//把16进制字符串转成2进制字符串 publicStri ...

  9. 算法笔记_072:N皇后问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 把n个皇后放在一个n*n的棋盘上,使得任何两个皇后都不能相互攻击,即它们不能同行,不能同列,也不能位于同一条对角线上. 2 解决方案 本文采用全排列 ...

最新文章

  1. 腾讯云:新基建大潮下国产数据库的探索与思考 | 云·创课程实录
  2. 基于weblogic 的EJB 学习笔记-JSP教程,资料/其它
  3. 棋盘切割 DP POJ 1191
  4. 分时系统的用户具有独占性,因此一个用户可以独占计算机系统的资源.,课件2016计算机操作系统试题库(判断).doc...
  5. Final Project Proposal ——陈稳霖
  6. 计算机网络技术实验,计算机网络技术实验一
  7. linux编译器下载地址,GNU Compiler Collection(gcc编译器) v4.9.1 linux版
  8. Python 发送短信
  9. 【认证】JNCIE-SP备战心得
  10. 计量模型 | 前定变量#时间FE
  11. 微信小程序实践——实验3视频播放小程序
  12. 【计算机网络】湖南科技大学 笔记一
  13. mac使用hbuilderx安卓模拟器调试app
  14. ibm ilog mysql_IBM ILOG CPLEX Optimization Studio: 一个整数规划的案例
  15. FICO 里面的替代和校验 以及调试
  16. 关于IDEA导包出现错误,爆红的情况
  17. stm32F407时钟配置
  18. SQL Server(MSSQLSERVER)无法启动问题解决
  19. Win10系统开始菜单无法点击解决方法分享
  20. VBA 添加日历控件的操作

热门文章

  1. 模板缓冲_模板缓冲以及如何使用它可视化体积相交
  2. 送你一份用Electron开发桌面应用的避坑指南【送3本书,含犀牛书】
  3. 碎片化学习前端资料分享~
  4. 碎片化学前端,促进技术提升,我推荐这些
  5. network中的请求信息,headers中的每一项分别是什么意义?
  6. [环境搭建]SDN网络感知服务与最短路径应用
  7. MySQL默认数据库简介
  8. 使用mysql_fetch_array()获取当前行数据
  9. [转]张孟苏考上的不是大学
  10. 猴子排圈求最后编号问题