问题描述: 前缀表达式转成后缀表达式,示例: * + 4 2 + 3 6=> 4 2 + 3 6 + *思路(树): 1. 从左往右扫描串 2. 遇到操作符则递归构造树节点,当前操作符是根节点,并递归构造左右子节点 3. 后序遍历当前结果,并返回代码: 1 #include 2 #inc...
分类:
其他好文 时间:
2014-10-27 10:42:33
阅读次数:
205
问题描述: 后缀表达式也叫逆波兰式,中缀到后缀举例: ( 4 + 2 ) * ( 3 + 6 ) => 4 2 + 3 6 + * (3 + 4 / 2) - 5 => 3 4 2 / + 5 - 问题是求解类似以上右侧的后缀表达式。思路1(递归): 1. 从右向左扫描 2. 因为后缀表...
分类:
其他好文 时间:
2014-10-26 11:35:59
阅读次数:
238
题目链接:http://poj.org/problem?id=3295思路:判断逻辑表达式是否为永真式问题。根据该表达式的特点,逻辑词在逻辑变量前,类似于后缀表达式求值问题。算法中使用两个栈,从表达式的后边开始处理表达式中每个字符;若为逻辑变量,使其入栈SR,否则从栈SR中弹出两个逻辑变量,进行运算...
分类:
其他好文 时间:
2014-10-25 01:59:07
阅读次数:
223
题意:给出一个字符串,有两种操作: 1.插入一个数字 2.交换两个字符 问最少多少步可以把该字符串变为一个后缀表达式(操作符只有*)。解法:仔细观察,发现如果数字够的话根本不用插入,数字够的最低标准为'*'的个数+1,因为最优是 '12*3*..' 这种形式,所以先判断够不够,不够就补,然后从左往....
分类:
其他好文 时间:
2014-10-14 21:14:09
阅读次数:
158
ZOJ Problem Set - 3829Known Notation(贪心)
题目链接
题目大意:给你一个后缀表达式(只有数字和符号),但是这个后缀表达式的空格不幸丢失,现在给你一个这样的后缀表达式,问最少需要多少操作可以把这个表达式变成合法的。
操作:
1、在这个表达式的任何位置插入‘’或者数字(一位数)。
2、把这个表达式的任何两个位置的字符对换。
解题思路:
一...
分类:
其他好文 时间:
2014-10-14 14:08:38
阅读次数:
131
题目链接:zoj 3829 Known Notation
题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。
解题思路:贪心,数字的个数要要保证比?的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到?-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是...
分类:
其他好文 时间:
2014-10-13 12:15:49
阅读次数:
157
题目连接:http://codevs.cn/problem/1107/
一道很神奇的题目。对于算术表达式一类的问题,可以采用编译原理里的后缀表达式的方式来做,具体做法是分别维护两个栈,一个栈里保存表达式里的数字,另一个栈里保存表达式里的运算符,给每种运算符一个优先级,我们要维护这个栈的单调性,每次读入运算符中的数字或运算符,读入的是运算符时,若这个运算符比栈顶的运算符优先级低,就弹出栈顶元素...
分类:
其他好文 时间:
2014-10-06 14:53:50
阅读次数:
282