Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
161768 梁乃元 后序表达式 C++ 运行超时 0 1000 MS 248 KB 1385 2024-08-05 21:40:17

Tests(0/10):


# include <bits/stdc++.h> using namespace std ; stack <double> num ; stack <char> op ; void cal ( ) { double a = num . top ( ) ; num . pop ( ) ; double b = num . top ( ) ; num . pop ( ) ; char c = op . top ( ) ; op . pop ( ) ; switch ( c ) { case '+' : { num . push ( a + b ) ; } case '-' : { num . push ( a - b ) ; } case '*' : { num . push ( a * b ) ; } case '/' : { num . push ( a / b ) ; } } } int h ( char op ) { if ( op == '(' ) { return 0 ; } else if ( op == '+' || op == '-' ) { return 1 ; } else { return 2 ; } } int main ( ) { string s ; getline ( cin , s ) ; for ( int i = 0 ; i < s . size ( ) ; i ++ ) { if ( isdigit ( s [i] ) ) { int tmp = s [i] - '0' ; while ( isdigit ( s [i + 1] ) && i < s . size ( ) ) { i ++ ; tmp *= 10 ; tmp += s [i] - '0' ; } i -- ; } else if ( s [i] == '(' ) { op . push( s [i] ) ; } else if ( s [i] == ')' ) { while ( op . top ( ) != '(' ) { cal ( ) ; } op . pop ( ) ; } else { while ( ! op . empty ( ) && h ( op . top ( ) ) > h ( s [i] ) ) { cal ( ) ; } op . push ( s [i] ) ; } } while ( ! op . empty ( ) ) { cal ( ) ; } cout << fixed << setprecision ( 2 ) << num . top ( ) << endl ; return 0 ; }


测评信息: