这题怎么这么毒瘤...

一开始我想转后缀表达式来计算,后来发现有负数...弃疗。

递归求解又发现会有多余括号,我觉得不行...

实在是毒瘤啊!

 #include <cstdio>
#include <iostream>
#include <string>
typedef long long LL;
std::string s; bool isop(char c) {
if(c == '+') return ;
if(c == '-') return ;
if(c == '*') return ;
if(c == '/') return ;
if(c == '^') return ;
return ;
} LL pow(LL a, LL b) {
LL ans = ;
for(int i = ; i <= b; i++) {
ans *= a;
}
return ans;
} LL solve(int l, int r) {
int f = ;
int pos1 = -, pos2 = -, pos3 = -;
for(int i = l; i <= r; i++) {
if(isop(s[i]) && (!f)) {
if(s[i] == '+' || s[i] == '-') {
pos1 = i;
}
else if(s[i] == '*' || s[i] == '/') {
pos2 = i;
}
else {
pos3 = i;
}
}
else if(s[i] == '(') f++;
else if(s[i] == ')') f--;
} if(f > ) {
LL temp = solve(l + , r);
return temp;
} if(f < ) {
LL temp = solve(l, r - );
return temp;
} if(pos1 > l) {
if(s[pos1] == '+') {
return solve(l, pos1 - ) + solve(pos1 + , r);
}
else {
return solve(l, pos1 - ) - solve(pos1 + , r);
}
}
else if(pos2 != -) {
if(s[pos2] == '*') {
return solve(l, pos2 - ) * solve(pos2 + , r);
}
else {
return solve(l, pos2 - ) / solve(pos2 + , r);
}
}
else if(pos3 != -) {
return pow(solve(l, pos3 - ), solve(pos3 + , r));
}
else if(s[l] == '(' && s[r] == ')'){
return solve(l + , r - );
}
else {
LL ans = ;
int f = ;
while(s[l] == '(') l++;
if(s[l] == '-') {
f = -;
l++;
}
for(int i = l; i <= r; i++) {
if(s[i] == ')') break;
ans = ans * + s[i] - '';
}
return ans * f;
}
} int main() {
std::cin >> s;
printf("%lld", solve(, s.size() - ));
return ;
}

AC代码

tyvj/joyoi 1043 表达式计算4的更多相关文章

  1. .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...

  2. C# - 二叉树表达式计算

    很早以前就写过双栈的表达式计算. 这次因为想深入学一下二叉树,网上都是些老掉牙的关于二叉树的基本操作. 感觉如果就学那些概念,没意思也不好记忆.于是动手写了一个表达式计算的应用例子. 这样学习印象才深 ...

  3. C#动态表达式计算

    C#动态表达式计算 应该有不少人开发过程中遇到过这样的需求,我们直接看图说话: 如上图所示,其中Entity为实体类,其中包括五个属性,该五个属性的值分别来自于数据库查询结果: 用户通过可视化界面进行 ...

  4. C#动态表达式计算(续2)

    上两篇废话太多,这一次我就不多说了,由于代码比较简单,可以直接从https://github.com/scottshare/DynamicExpress.git地址下载. 以下说明一下使用方法: Dy ...

  5. 栈应用之 后缀表达式计算 (python 版)

    栈应用之 后缀表达式计算 (python 版) 后缀表达式特别适合计算机处理 1.  中缀表达式.前缀表达式.后缀表达式区别  中缀表达式:(3 - 5) * (6 + 17 * 4) / 3 17 ...

  6. C++实现 逆波兰表达式计算问题

    C++实现 逆波兰表达式计算问题 #include <iostream> #include <string> using namespace std; class Stack ...

  7. 算法笔记_044:表达式计算求值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的 ...

  8. Fel表达式计算引擎学习

    转载原文地址:Fel是轻量级的高效的表达式计算引擎 Fel的问题 Fel的问题 Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是 ...

  9. 蓝桥杯 算法训练 ALGO-156 表达式计算

    算法训练 表达式计算   时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输 ...

随机推荐

  1. CMake--变量

    1.一般变量 1)CMake变量引用的方式 使用${}进行变量的引用.例如: ${PROJECT_NAME} #返回项目名称 在 IF 等语句中,是直接使用变量名而不通过${}取值. 2)cmake自 ...

  2. 金蝶CLOUD与EAS的区别

    1.金蝶K/3 WISE主要面向单体制造企业(主要是离散制造企业):2.金蝶K/3 Cloud主要面向业务类型单一(即主营业务单一)的.注重供应链与生产业务协同的.中小型(二层集团??)集团性企业(主 ...

  3. CLOUD计算产品成本嵌套

    1.产品入库单入库的半成品A (无单价) 2.其他出库单上(共耗的)出库的半成品A(无单价) 不管在同车间还是不同车间内都是认定为嵌套的,所以可以计算2遍成本,第1遍不考虑嵌套,第2遍就能计算进去了.

  4. Gevent 性能和 gevent.loop 的运用和带来的思考

    知乎自己在底层造了非常多的轮子,而且也在服务器部署方面和数据获取方面广泛使用 gevent 来提高并发获取数据的能力.现在开始我将结合实际使用与测试慢慢完善自己对 gevent 更全面的使用和扫盲. ...

  5. 谈谈对C#中反射的一些理解和认识(上)

    今天就平常用到的非常多的反射这个技术来做一个总结,当然关于反射需要讲解的东西实在是太多的内容,在一片文章中想要讲解清楚是非常难的,本篇博客也是就自己本人对这些内容学习后的一个总结,当然包括看书和自己写 ...

  6. loadrunner 事务、同步点和思考时间

    事务 在LoadRunner里,我们定义事务主要是为了度量服务器的性能.每个事务度量服务器响应指定的Vuser请求所有的时间,这些请求可以是简单任务,也可以是复杂任务. 要度量事务,需要插入Vuser ...

  7. OPENQUERY (Transact-SQL)

    Syntax Copy OPENQUERY ( linked_server ,'query' ) Arguments linked_serverIs an identifier representin ...

  8. codeforces362B

    Petya and Staircases CodeForces - 362B 题意: 一个小男孩要上楼梯,他一次可以走1个台阶或2个台阶或3个台阶,但是有一些台阶是脏的,他不想走在脏台阶上.一共有n个 ...

  9. Nginx 浏览器缓存

    L:97 一般都是 同时使用 浏览器与Nginx缓存

  10. C#开发轻松入门--笔记

    第一章 1-1 .NET简介 (02:11) 1-2 Visual Studio简介及安装 (03:23) 1-3 创建C#控制台程序 (04:14) 1-4 练习题 1-5 程序界面各部分介绍 (0 ...