用java求解一道趣味体:123456789插入+,
最近在CSDN,看到了一道趣味题:123456789这九个按顺序排列的数,要求在它们之间插入若干个+,-,*,/ ,使其结果正好等于
100如:1*2*3*4+5+6+7*8+9=100。
看了题目后,思考如果用java如何实现。以下是我的解题思路:
思想比较简单,先将插入+,-,*,/后的所有字符串都穷举出来,然后计算哪些字符串等于100。
这里要解决两个问题,一个是怎样将所有的字符串都穷举出来,另一个是怎样将字符串的值计算出来。
第一个问题思路:插入+,-,*,/,其实应该是插入"+", "-", "*", "/", ""。插入""表示相邻数字组成一个数。用递归实现加入每个符号,直到加入最后一个数字。
第二个问题思路:使用栈先将一般的中缀表达式如1*2*3*4+5+6+7*8+9转成后缀表达式1 2 *3 *4 *5 +6 +7 8 *+9 +,
然后再用栈将后缀表达式的值求出,具体思路可以去看下栈在计算表达式值的应用。
以下是具体的代码:
import java.util.Stack;
import java.util.Vector;
public class Hundred {
/**
* 将中缀表达式转为后缀表达式
* @param expstr
* @return
*/
public static String toPostfix(String expstr) {
Stack<String> stack = new Stack<String>();
String postfix = "";
int i = 0;
while (i < expstr.length()) {
char ch = expstr.charAt(i);
switch (ch) {
case '+':
case '-': while (!stack.isEmpty()) {
postfix += stack.pop();
}
stack.push(ch +"");
i++;
break;
case '*':
case '/': while (!stack.isEmpty() && (stack.peek().equals("*")
|| stack.peek().equals("/"))) {
postfix += stack.pop();
}
 
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
作用域 功能 快捷键
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局 恢复上一个选择 Alt+Shift+↓
全局 快速修正 Ctrl1+1
全局 内容辅助 Alt+/
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shi ......
本文详细的介绍了使用Java语言建立一套多线程服务器的过程,该服务器使用对象传递消息,在线程中使用队列机制,使服务器的性能大大提高了。这套服务器可以被用于各种C/S或B/S结构的应用程序中。
Java语言是完全面向对象
的,它的线程机制和对象序列化特别容易使用,使用Java来建立一套多线程服务器要比使用其它语 ......
贴在我们多线程 Java 编程论坛上最常见的问题之一是“怎样创建线程池?”。几乎在每个服务器应用程序中都会出现线程池和工作队列问题。本文中,Brian Goetz 探讨了线程池的动机、一些基本实现和调优技术以及一些要避免的常见危险。
为什么要用线程池?
诸如 Web
服务器、数据库服务器、文件服务器或邮 ......
想想自己明年就要毕业了,但自己心里总是很担心,也不知道自己学这个到底是对还是错!总是听说现在做程序的工作不好找,工资很低,现在有好多同学都没学了,也不知道自己是不是还要坚持下去,是不是还要jiava这条路。感觉好迷茫....... ......