SPOJ 4. Transform the Expression

原创 2012年03月26日 17:42:30

将中缀表达式转换为后缀表达式,大家应该都很熟悉。具体过程为先为可能出现的括号和操作符('(','+','-','*','/‘,'^'等)赋一个优先级,其中'('优先级最低。然后顺次扫描输入的表达式(即字符串),

1. 碰到'('时,直接入栈

2. 碰到操作符时,如果优先级大于栈顶操作符的优先级,则入栈,否则将其直接输出

3. 碰到')'时,将栈中的所有操作符出栈直到碰到'('时为止,但并不输出'('

4. 对于操作数直接输出

算法涉及四种输入(左括号,右括号,操作符和操作数)和两种操作(入栈和持续出栈)。另外就是语言方面,python的print默认是换行的,虽然在语句后加逗号可以在同一行,但是会在逗号后加一个空格,如果要既不换行也不加空格,网上的方法都是用sys.stdout.write()。此外,input()和raw_input()最大的区别就是input()返回一个整数而raw_input()返回的是字符串。要访问字符串中的每个字符,在python中可以直接用for c in str。

import sys

priority={'(':0,'+':1,'-':2,'*':3,'/':4,'^':5}
stack=[]
t=input()
while t:
    exp=raw_input()
    for c in exp:
        if c=='(':
            stack.append(c)
        elif c==')':
            while 1:
                p=stack.pop()
                if p<>'(':
                    sys.stdout.write(p)
                else:
                    break;
        elif c=='+' or c=='-' or c=='*' or c=='/' or c=='^':
            if priority[c]>priority[stack[-1]]:
                stack.append(c)
            else:
                sys.stdout.write(c)
        else:
            sys.stdout.write(c)
    print
    t=t-1



SPOJ Transform the Expression 逆波兰式算法题解

把带括号的一般正常的算式,转换成逆波兰式。 输入和输出如下例子: Input: 3 (a+(b*c)) ((a+b)*(z+x)) ((a+t)*((b+(a+c))^(c+d))) Output...

Fourier Transform Intro - Oscillation frequency vs Angular frequency Expression

http://mathworld.wolfram.com/FourierTransform.html Fourier Transform The Fourier transform is ...

零元學Expression Blend 4 - Chapter 44 Flash做的到的Blend也可以!輕鬆製作擁有動畫的MenuBar!(下)

抱歉久等了!!!! 終於到了動畫MenuBar的最終章囉! :)     由於,本篇動畫設定較多,為求步驟清楚,所以文章較為冗長 而小猴子因為篇幅的關係也已經刪減了一...

java基于Expression4j操作和实现数学公式

import java.util.List; import fr.expression4j.basic.MathematicalElement; import fr.expression4j.bas...
  • earbao
  • earbao
  • 2014年10月06日 18:58
  • 6257

4-5-Evaluate Postfix Expression

4-5 Evaluate Postfix Expression Write a program to evaluate a postfix expression. You only ha...

Expression blend 4 破解

Expression Studio 4 中文旗舰版 (Ultimate)破解注册码 下载 Expression Studio 4正式版今天在纽约发布,该软件包包括以下四个重要部分: E...
  • cubuntu
  • cubuntu
  • 2012年08月04日 09:41
  • 2743

Microsoft Expression Studio 4 Ultimate SP2 简体中文版

Microsoft Expression Studio 4 Ultimate SP2 简体中文版   Expression Studio 4  SP2 简体中文版  —  微软网页制作套件...
  • e_wsq
  • e_wsq
  • 2011年11月19日 15:33
  • 1866

Hello,Expression Blend 4 (含Demo教程和源码)

标签:SilverlightBlend原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://hielvis.blog.51cto.com...
  • chjjo
  • chjjo
  • 2011年03月29日 09:09
  • 1068
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SPOJ 4. Transform the Expression
举报原因:
原因补充:

(最多只允许输入30个字)