目录

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 解决方案

 import java.util.Stack;

 public class Main {
public static char[] operation = {' ', '+', '-' }; public void check(char[] A) {
StringBuffer s = new StringBuffer("");
for(int i = 1;i <= 8;i++) {
s.append(i);
if(A[i - 1] != ' ')
s.append(A[i - 1]);
}
s.append(9);
String t = s.toString();
if(t.length() == 9)
return;
Stack<Integer> r = new Stack<Integer>();
Stack<Character> o = new Stack<Character>();
for(int i = 0;i < t.length();i++) {
if(t.charAt(i) == '+' || t.charAt(i) == '-') {
if(r.size() == 2) {
int a1 = r.pop();
int b1 = r.pop();
char o1 = o.pop();
if(o1 == '+')
r.push(a1 + b1);
else
r.push(b1 - a1);
}
o.push(t.charAt(i));
continue;
}
int a = 0;
while(i < t.length() && t.charAt(i) >= '1' && t.charAt(i) <= '9') {
a = a * 10 + (t.charAt(i) - '0');
i++;
}
i--;
r.push(a);
}
int a1 = r.pop();
int b1 = r.pop();
char o1 = o.pop();
if(o1 == '+')
r.push(a1 + b1);
else
r.push(b1 - a1);
if(r.pop() == 110)
System.out.println(t);
} public void dfs(int step, char[] A) {
if(step == 8) {
check(A);
} else {
for(int i = 0;i < 3;i++) {
A[step] = operation[i];
dfs(step + 1, A);
}
}
} public static void main(String[] args) {
Main test = new Main();
char[] A = new char[8];
test.dfs(0, A);
}
}

运行结果:

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. Java实现填符号凑算式

    匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练! 某批警察叔叔正在进行智力训练: 1 2 3 4 ...

  2. 算法笔记_221:串的简单处理(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 串的处理在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求程序对用户输入的串进行处理.具体规则如下:1. 把每个单词的首字母变为大 ...

  3. 算法笔记_177:历届试题 城市建设(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有 ...

  4. 算法笔记_135:格子取数问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 有n*n个格子,每个格子里有正数或者0,从最左上角往最右下角走,只能向下和向右走,一共走两次(即从左上角往右下角走两趟),把所有经过的格子里的数加起 ...

  5. 算法笔记_045:币值最大化问题(Java)

    目录 1 问题描述 2 解决方案 2.1 动态规划法   1 问题描述 给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同.请问如何选择硬币,使得在其原始位置互不相邻 ...

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

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

  7. 算法笔记_051:荷兰国旗问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球.白球.蓝球.这个问题之所以叫荷兰国旗,是因为 ...

  8. 蓝桥杯-凑算式-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  9. 算法笔记_232:提取拼音首字母(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 在很多软件中,输入拼音的首写字母就可以快速定位到某个词条.比如,在铁路售票软件中,输入: “bj”就可以定位到“北京”.怎样在自己的软件中实现这个功 ...

随机推荐

  1. OCP-1Z0-051-题目解析-第22题

    22. You need to create a table for a banking application. One of the columns in the table has the fo ...

  2. 利用WebSocket传输数组或者Blob的方案

    最近在利用Html5的WebSocket进行即时通讯,一点小心得,大家一起讨论吧 首先把WebSocket的协议网址和WebSocket API网址给大家: 协议:http://tools.ietf. ...

  3. 为什么用freemarker视图?

    在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术优点:1.功能强大,可以写java代码2.支持jsp标签(jsp tag)3.支持表达式 ...

  4. 黑马day17 ajax&amp;实现username自己主动刷新

    1. regist.jsp文件 <%@ page language="java" pageEncoding="utf-8"%> <!DOCTY ...

  5. Linux 批量查找替换方法(VIM和sed)

    版权声明:欢迎与我交流讨论,若要转载请注明出处~ https://blog.csdn.net/sinat_36053757/article/details/70946263 1.VIM命令 当前行进行 ...

  6. Just-In-Time Debugging in Visual Studio 禁止VS在服务器上调试

    To disable Just-In-Time debugging by editing the registry On the Start menu, search for and run rege ...

  7. protobuf 语法简介

    protobuf 语法简介 1.基本语义 在.proto文件中,最基本的数据类型为message,如其定义所示,由message引导,之后是message类型的名字,之后是由{}包含的各个域(fiel ...

  8. Swift3.0:PhotoKit的使用

    一.介绍 iOS8之前使用AssetsLibrary来获取相册资源,iOS新引入框架PhotoKit框架,也即Photos.framework 二.PhotoKit的基本构成包括如下几项: PHAss ...

  9. 6.2 dubbo在spring中自定义xml标签源码解析

    在6.1 如何在spring中自定义xml标签中我们看到了在spring中自定义xml标签的方式.dubbo也是这样来实现的. 一 META_INF/dubbo.xsd 比较长,只列出<dubb ...

  10. 网络监测 断网 网速 ping 完整案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...