• NYOJ 128 前缀表达式的计算


                          前缀式计算

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

    先说明一下什么是中缀式:

    如2+(3+4)*5这种我们最常见的式子就是中缀式。

    而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))

    然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )

    把括号去掉就是:+ 2 * + 3 4 5

    最后这个式子就是该表达式的前缀表示。

    给你一个前缀表达式,请你计算出该前缀式的值。

    比如:

    + 2 * + 3 4 5的值就是 37

     
    输入
    有多组测试数据,每组测试数据占一行,任意两个操作符之间,任意两个操作数之间,操作数与操作符之间都有一个空格。输入的两个操作数可能是小数,数据保证输入的数都是正数,并且都小于10,操作数数目不超过500。
    以EOF为输入结束的标志。
    输出
    对每组数据,输出该前缀表达式的值。输出结果保留两位小数。
    样例输入
    + 2 * + 3 4 5
    + 5.1 / 3 7
    样例输出
    37.00
    5.53

    经典回溯题:

     1  #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<sstream>
     5 using namespace std;
     6 stringstream ss;
     7 double value;
     8 char ch;
     9 double val()
    10 {
    11     ss>>ch;
    12     switch(ch)
    13     {
    14     case '+':return val()+val();
    15     case '-':return val()-val();
    16     case '*':return val()*val();
    17     case '/':return val()/val();
    18     default:ss.unget();ss>>value;return value;
    19     }
    20 }
    21 
    22 int main()
    23 {
    24     string str;
    25     while(getline(cin,str))
    26     {
    27         ss.clear();
    28         ss<<str;
    29         printf("%.1f
    ",val());
    30     }
    31 }        
  • 相关阅读:
    iOS开发拓展篇—音频处理(音乐播放器5)
    在Unity中接入Xbox360手柄
    POJ 2531 Network Saboteur(DFS)
    小塔1024实现
    Cocos2dx--开发环境搭建
    2.7 视图合并
    Cocos2d-X开发中国象棋《四》设计游戏场景
    libsqlite3.dylib与libsqlite3.0.dylib的差别
    AsyncTask
    开发,从需求出发 &#183; 之二 造飞机的工厂
  • 原文地址:https://www.cnblogs.com/ljwTiey/p/4296546.html
Copyright © 2020-2023  润新知