Java实现填符号凑算式
匪警请拨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或更高版本。
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
Java实现填符号凑算式的更多相关文章
- 算法笔记_226:填符号凑算式(Java)
目录 1 问题描述 2 解决方案 1 问题描述 匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训 ...
- Java实现蓝桥杯凑算式(全排列)
题目6.凑算式 凑算式 B DEF A + - + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. 比如: ...
- java算法 第七届 蓝桥杯B组(题+答案) 3.凑算式
3.凑算式 (结果填空) B DEFA + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~ ...
- java实现第七届蓝桥杯凑算式
凑算式 凑算式 B DEF A + - + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. 比如: 6+8 ...
- Java 与无符号那些事儿
最近在使用 Java 作为 WebSocket 客户端连接 Node.js 的 WebSocket 服务器的时候,由于使用的客户端库比较老,所以遇到了字节符号的问题,上网查了一下,看到这篇文章写的很有 ...
- 第七届蓝桥杯javaB组真题解析-凑算式(第三题)
题目 /* 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比 ...
- 蓝桥杯第七届C/C++B省赛凑算式
第三题: 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字, ...
- 关于Java中语句符号及格式的理解
关于Java中语句符号及格式的理解 这篇文章是撰写的第一篇文章,在此作一下博主是一名在读的工科研究生,种种原因,研二开始决定转行从事程序员工作.开始的自学之路并不算非常顺畅,也走了一点弯路,但一直都坚 ...
- 凑算式——第七届蓝桥杯C语言B组(省赛)第三题
原创 凑算式 B DEFA + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的 ...
随机推荐
- Mysql 常用函数(3)- ifnull 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html ifnull 的作用 可以判断某个字段的值是否为 ...
- 常用DOS命令大全
常用DOS命令大全 常用的内部命令有MD.CD.RD.DIR.PATH.COPY.TYPE.EDIT.REN.DEL.CLS.VER.DATE.TIME.PROMPT 常用的外部命令有DELTREE. ...
- 关于QQ可以发消息但是网页刷不出来问题
相信很多人都遇到过这个问题,明明可以登陆QQ,但是网页就是打不开,而且这种情况经常伴有网卡图标显示叹号的情况.笔者这里就教你一个方法,保证好用. 首先,在开始菜单输入cmd,在命令符模式下点击右键选择 ...
- 3.5 Go布尔型
1.Go布尔型 一个布尔类型的值只有两种:true 和 false. if 和 for 语句的条件部分都是布尔类型的值,并且==和<等比较操作也会产生布尔型的值. package main im ...
- AVL树的创建--C语言实现
AVL树是一种自平衡(Self-balancing)二叉查找树(Binary Search Tree),要求任何一个节点的左子树和右子树的高度之差不能超过1. AVL树的插入操作首先会按照普通二叉查找 ...
- A + B Problem(hdu1000)
注意,认真读题目的Input要求,看看是输入一组测试数据还是输入多组测试数据.输入多组数据,不要忘记while(). #include<iostream> using namespace ...
- Java并发:线程安全分析
java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...
- 初识Java以及JAVA开发环境搭建
目录 JAVA帝国的诞生 C&C++ JAVA JAVA特性和优势 JAVA三大版本 JDK.JRE.JVE JAVA开发环境搭建 JDK下载与安装.卸载 安装JDK 卸载JDK JDK目录介 ...
- 技术大佬:我去,你竟然还不会用 this 关键字
上一篇文章写的是 Spring Boot 的入门,结果有读者留言说,Java 都还没搞完,搞什么 Spring Boot,唬得我一愣一愣的.那这篇就继续来搞 Java,推出广受好评的我去系列第四集:你 ...
- PHP时间操作
PHP中对日期进行处理常用的几个函数如下: date(format,timestamp): 把时间戳格式化为更易读的日期和时间 format : 必需,规定输出日期字符串的格式 timestamp : ...