输入一个长度不超过1000的字符串,包括数字(1-9)和星号(*)。字符串中的空格已经丢失,所以连起来的数字串可以看成许多分开的数,也可以看成连续的数,即可以随意添加空格。现在有两种操作:1)在任意位置添加任意类型的字符(数字或者星号) 2)交换字符串中的任意两个字符
求:最少操作多少次,使得得到的串是一个合法的逆波兰式...
分类:
其他好文 时间:
2014-10-13 15:03:19
阅读次数:
208
在程序设计中,可能碰到需要对字符串数学表达式求值的问题,常用的方法是解析表达式,生成二叉树,然后进行计算。编译器就是使用这种方法来解析程序中的表达式的。这种方法实现起来有点难度,需要考虑运算符的优先级,括号的配对,堆栈的使用等等。我们正常情况下看到的数学表达式如果用二叉树遍历的话,恰好是中序遍历,故...
分类:
其他好文 时间:
2014-10-09 00:05:57
阅读次数:
263
波兰式,操作符放在操作数前。逆波兰式,操作符放在操作数后。中序的话,用两个栈,一个存操作符, 一个存操作数,根据操作符优先级来操作。为了处理边界情况,在操作符的栈底和栈顶都放了一个"#"。伪代码如下: 1 stack ops; 2 stack nums; 3 ops.push('#'); 4 5 ....
分类:
其他好文 时间:
2014-10-05 17:09:38
阅读次数:
297
中缀表达式转后缀表达式
1 基本概念
在计算机中表达式有三种,前缀表达式(波兰式),中缀表达式,后缀表达式(逆波兰式)。
如表达式:a+b*(c-d)-e/f
前缀表达式:-+a*b-cd/ef
中缀表达式:a+b*(c-d)-e/f
后缀表达式:abcd-*+ef/-
1.1 特点与利弊
中缀表达式的括号必不可少,它的优点是符合我们人类的书写和...
分类:
其他好文 时间:
2014-09-20 03:35:06
阅读次数:
220
一个模板了 哈哈
/*
这里主要是逆波兰式的实现,使用两个stack 这里用字符串来模拟一个stack,第一步,将中缀表达式转变为后缀表达式
第二步,然后再使用一个stack,计算后缀表达式的结果,这一步很容易出错,考虑到浮点数的问题。
*/
#include
#include
#include
#include
#include
#include
using namespace s...
分类:
其他好文 时间:
2014-09-19 15:36:35
阅读次数:
198
分析
首先将中缀表达式转换为后缀表达式(逆波兰式),然后使用栈进行计算。
代码
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
public class ExpCal {
public static double calc(String exp) {
if (exp == null...
分类:
其他好文 时间:
2014-09-18 11:28:43
阅读次数:
206
/***************
逆波兰式即后缀表示法
预处理 ———— 中序表达式->逆序表达式(infix to postfix)
算法:
while(表达式非空)
if (遇到操作数)
直接输出
else if (遇到操作符op)
op是( 直接入栈s
op是) s.push输出,直到(
op是四则运算,则
if (s为空 || ...
分类:
其他好文 时间:
2014-09-13 21:32:25
阅读次数:
238
计算逆波兰式子:
有效的操作只有 +, -, *, /.
每一个输入不是一个整数就是一个操作符。
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
#include
#include
#i...
分类:
其他好文 时间:
2014-08-23 23:02:10
阅读次数:
465
表达式求值前缀式:就是将操作符放到数值的前面;如:a+b : +ab;中缀式:就是将操作符放在数值中间,其实就是我们平时生活中所写的正常的表达式。如:a+b;后缀式:就是将操作符放在数值的后面,比如:a+b:——ab+.对于表达式求值,最简单的当然是对后缀表达式(也称为逆波兰式)进行求值了。而我们生...
分类:
其他好文 时间:
2014-08-22 10:37:36
阅读次数:
180
逆波兰式的求解,建立一个类栈容器,遍历给定的逆波兰表达式,遇到数字就push, 遇到操作符就进行出栈,连续出两次,因为给定的四则运算符都是双目的,这里注意下这两个操作数的先后顺序,因为对于加法和乘法没关系,但是对于减法和除法是有先后关系的。然后进行相应的运算,将结果push进栈中。
这里附带说明下python中进行除法运算与c,java系列中的除法的不同,就是向下取整的问题。这种不同表现在两个操...
分类:
编程语言 时间:
2014-07-06 12:22:02
阅读次数:
235