Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
162549 梁乃元 后序表达式 C++ 运行超时 0 1000 MS 256 KB 1441 2024-08-07 22:03:32

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 ( b + a ) ; } case '-' : { num . push ( b - a ) ; } case '*' : { num . push ( b * a ) ; } case '/' : { num . push ( b / a ) ; } } } int h ( char op ) { if ( op == '(' ) { return 0 ; } else if ( op == '+' || op == '-' ) { return 1 ; } else if ( op == '*' || op == '/' ) { return 2 ; } return 3 ; } int main ( ) { string s ; getline ( cin , s ) ; for ( int i = 0 ; i < s . size ( ) ; i ++ ) { if ( isdigit ( s [i] ) ) { int tmp = s [i] - '0' , j = i ; while ( isdigit ( s [j + 1] ) && j < s . size ( ) ) { j ++ ; tmp *= 10 ; tmp += s [i] - '0' ; } i = j - 1 ; } 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 ; }


测评信息: