博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1684 Lazy Math Instructor(字符串)
阅读量:5282 次
发布时间:2019-06-14

本文共 1905 字,大约阅读时间需要 6 分钟。

题目链接

思路分析:该问题为表达式求值问题,对于字母使用浮点数替换即可,因为输入中的数字只能是单个digit。

 

代码如下:

#include 
#include
#include
#include
#include
#include
using namespace std;const int MAX_N = 100;const double factor = 1.1;double number[MAX_N];char str[MAX_N];int len, pos;double Expression( );double Term( );double Factor( );void InputExpression( ){ int i = 0; pos = 0; string str_in; getline(cin, str_in); for (i = 0, len = 0; i < str_in.length( ); ++i, ++len) str[len] = str_in[i]; str[len] = '\0';}char GetCurrentToken( ){ while (str[pos] == ' ' || str[pos] == '\t') pos++; return str[pos];}char GetNextToken( ){ ++pos; while (str[pos] == ' ' || str[pos] == '\t') pos++; if (pos == len) return '\n'; else return str[pos];}double Expression( ){ char ch; double term1 = Term( ); while ((ch = GetCurrentToken( )) == '+' || (ch == '-')) { GetNextToken( ); double term2 = Term( ); if (ch == '+') term1 += term2; else term1 -= term2; } return term1;}double Term( ){ char ch; double factor_1 = Factor( ); while ((ch = GetCurrentToken( )) == '*') { GetNextToken( ); double factor_2 = Factor( ); factor_1 *= factor_2; } return factor_1;}double Factor( ){ double value = 0.0; char ch = GetCurrentToken( ); if (ch == '(') { GetNextToken( ); value = Expression( ); GetNextToken( ); } else if (isdigit(ch)) { value = ch - '0'; GetNextToken( ); } else if (ch == '\n') value = -1; else { if (number[ch - 'A'] == 0) value = number[ch - 'A'] = (ch - 'A') * 1.1; else value = number[ch - 'A']; GetNextToken( ); } return value;}int main( ){ int case_time; scanf("%d\n", &case_time); while (case_time--) { InputExpression( ); double ans_1 = Expression( ); InputExpression( ); double ans_2 = Expression( ); if (abs(ans_1 - ans_2) < 1e-6) printf("YES\n"); else printf("NO\n"); } return 0;}

转载于:https://www.cnblogs.com/tallisHe/p/4970472.html

你可能感兴趣的文章
坏的事情不都会带来坏的结果
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
第二次团队冲刺第二天
查看>>
bzoj 2257 (JSOI 2009) 瓶子与燃料
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>
Linux误删恢复
查看>>
Unity调用Windows窗口句柄,选择文件和目录
查看>>
HashMap循环遍历方式
查看>>
React Native 入门 调试项目
查看>>
C# 通过 Quartz .NET 实现 schedule job 的处理
查看>>
关于java之socket输入流输出流可否放在不同的线程里进行处理
查看>>
目前为止用过的最好的Json互转工具类ConvertJson
查看>>
Day13
查看>>
tensorflow saver简介+Demo with linear-model
查看>>
Luogu_4103 [HEOI2014]大工程
查看>>
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>