HDU 1237
http://acm.hdu.edu.cn/showproblem.php?pid=1237
表达式计算,方法是中缀转后缀,再计算。中间处理用栈操作
讲解看http://blog.csdn.net/antineutrino/article/details/6763722
这题是简易版本的,不用处理括号
#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack> using namespace std; int cmp(char a, char b) {
if((a == '*' || a == '/') && (b == '+' || b == '-')) return ;
return ;
} double cal(double a, double b, char c) {
if(c == '+') return a + b;
if(c == '-') return a - b;
if(c == '*') return a * b;
if(c == '/') return a / b;
} int main() {
double a;
while(~scanf("%lf", &a)) {
char c;
c = getchar();
stack <char> s1;
stack <double> s2;
if(!a && c=='\n') break;
s2.push(a);
c = getchar();
while(~scanf("%lf", &a)) {
if(s1.empty()) {
s1.push(c);
}
else {
if(cmp(c, s1.top())) s1.push(c);
else {
while() {
double t1 = s2.top();
s2.pop();
double t2 = s2.top();
s2.pop();
char t3 = s1.top();
s1.pop();
double t4 = cal(t2, t1, t3);
s2.push(t4);
if(s1.empty() || cmp(c, s1.top())) {
s1.push(c);
break;
}
}
}
}
s2.push(a);
if(getchar() == '\n') break;
c = getchar();
}
while(!s1.empty()) {
double t1 = s2.top();
s2.pop();
double t2 = s2.top();
s2.pop();
char t3 = s1.top();
s1.pop();
double t4 = cal(t2, t1, t3);
s2.push(t4);
}
printf("%.2lf\n", s2.top());
}
return ;
}
HDU 1237的更多相关文章
- hdu 1237 简单计算器
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...
- *HDU 1237 栈
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 1237 简单计算器 栈
额,题目是中文的,题意就不用说了= =都看懂喽.写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就 ...
- hdu 1237 简单计算器 (表达式求值)【stack】
<题目链接> 题目大意: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符, ...
- 随手练——HDU 1237 表达式求值(输入格式典型)
坑了老子半天,结果是 float 范围不够!!! 基本思想: 开一个符号栈,一个数字栈: 碰到数字就入栈,碰到符号就与栈顶符号进行对比,如果当前符号优先级小于栈顶符号,数字栈弹出两个数进行栈顶符号运算 ...
- hdu 1237 简单计算器(栈处理)
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 1237 简单计算器(栈+stringstream)
提供几份代码,这题的输入可以用stringsteam处理,先处理乘除后处理加减,正常思路,但是后面统计加减法的时候,对栈的运用错了,我用的时候相当于给它多加了几个括号就错了. 正确的简单解法就是,加法 ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
- 【留念贴】Android开发——计算器
[过程] 在电商学霸&&代码女神XuFei的影响下,接触到了关于Android客户端的一些开发,第一次在Android平台搞出了一个App,真的是激动不已,所以必须开个留念贴记录一下. ...
随机推荐
- 用orb-slam2跑RGB-D Example中的TUM Dataset
链接在此:https://github.com/raulmur/ORB_SLAM2 1.按照要求下载数据集,我下载的是rgbd_dataset_freiburg2_pioneer_360,将其解压到你 ...
- server and client
server: using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst ...
- codevs 钢丝塔的庆生
#include <cstdio> #include <cmath> const int MOD = 9999991; int table[MOD + 1]; void cre ...
- 微信APP支付服务端开发Java版(一)
一.准备工作 去微信开发者中心下载(扫码支付,里面的大部分代码是可以用的) https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11 ...
- android学习之ListView
移通152余继彪 该组件用于显示列表的view 包含了三个关键元素 listView 适配器 以及数据,适配器主要是用于将数据映射到listview,适配器数据主要是有hasmap 配合list对每 ...
- SharePoint Calculated Columns 分类: Sharepoint 2015-07-09 01:49 8人阅读 评论(0) 收藏
SharePoint Calculated Columns are powerful tools when creating out-of-the-box solutions. With these ...
- jdbc escape
假如有这样1个查询请求,模糊查询标题中包含a%b_cc’d的记录,正确的sql应该是下面这样的: select * from t_sch_work_info t where t.title ...
- 第一篇:初识bootstrap
Bootstrap是一款目前非常流行的前端框架,简单的说,就是html,css,javascript的工具集,我们可以用bootstrap搭建出简洁,清新的网站或软件界面,有了bootstrap这个利 ...
- ucenter 新增用户后 自动登录discuz 不用激活
uc_client models user.php function add_user($username, $password, $email, $uid = 0, $questionid = '' ...
- ionic的start-y属性初始化页面
混合式开发移动app,要实现的是初始化页面时不展示搜索框,让页面向上移动一定位移. <ion-content class="has-subheader" start-y=&q ...