后缀表达式

[题解]P1449 后缀表达式

我怕爱的太早我们不能终老 提交于 2019-12-02 00:32:15
[题解]P1449 后缀表达式 题目链接: P1449 后缀表达式 题目描述: 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。 如:3 (5–2)+7对应的后缀表达式为:3.5.2.- 7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。 输入格式: 输入:后缀表达式 输出格式: 输出:表达式的值 输入输出样例: 输入 #1 3.5.2.-*7.+@ 输出 #1 16 分析: 栈 的一大用处是表达式的计算。本题要求根据后缀表达式求值,我们可以使用栈在 \(O(N)\) 的复杂度内求出后缀表达式的值。 下面给出后缀表达式求值的具体步骤: 以下为P1449后缀表达式的题解: #include<bits/stdc++.h> #define ll long long using namespace std; ll Stack[1200],x,top;char ch; int main() { ios::sync_with_stdio(false); while(cin>>ch&&ch!='@'){ if(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48); else if(ch=='.'){Stack[++top]=x;x=0;} else

四则运算结对编程(JAVA)

早过忘川 提交于 2019-12-01 14:13:03
一、Github项目地址 https://github.com/lyjkekeke/Arithmetic 项目成员:刘昱君,潘蓓文 二、PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 · Estimate · 估计这个任务需要多少时间 30 30 Development 开发 2340 2565 · Analysis · 需求分析 (包括学习新技术) 210 180 · Design Spec · 生成设计文档 90 120 · Design Review · 设计复审 (和同事审核设计文档) 60 30 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 60 45 · Design · 具体设计 500 400 · Coding · 具体编码 1000 1200 · Code Review · 代码复审 120 90 · Test · 测试(自我测试,修改代码,提交修改) 300 500 Reporting 报告 275 240 · Test Report · 测试报告 240 200 · Size Measurement · 计算工作量 15 15 · Postmortem & Process Improvement Plan ·

结对项目

半世苍凉 提交于 2019-12-01 14:08:10
一,Github项目地址: https://github.com/candy07213/MyAPP https://github.com/Moyjing/Myapp 结对成员:3217004686 莫怡静 3217004687 唐小艳 二,PSP表格: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 65 · Estimate · 估计这个任务需要多少时间 50 65 Development 开发 1770 2045 · Analysis · 需求分析 (包括学习新技术) 150 130 · Design Spec · 生成设计文档 60 55 · Design Review · 设计复审 (和同事审核设计文档) 40 60 · Coding Standard · 代码规范(为目前的开发制定合适的规范) 40 50 · Design · 具体设计 120 100 · Coding · 具体编码 1200 1450 · Code Review · 代码复审 70 90 · Test · 测试(自我测试,修改代码,提交修改) 90 110 Reporting 报告 160 140 · Test Report · 测试报告 90 80 · Size Measurement · 计算工作量

结对编程(JAVA实现)

只谈情不闲聊 提交于 2019-12-01 13:58:15
结对成员:钟苑莉 张冰微 一、 Github项目地址: https://github.com/Clarazhangbw/ruangongjd 二、PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 · Estimate · 估计这个任务需要多少时间 30 30 Development 开发 1960 2270 · Analysis · 需求分析 (包括学习新技术) 120 150 · Design Spec · 生成设计文档 40 50 · Design Review · 设计复审 (和同事审核设计文档) 20 30 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 30 · Design · 具体设计 60 80 · Coding · 具体编码 1600 1800 · Code Review · 代码复审 30 40 · Test · 测试(自我测试,修改代码,提交修改) 60 90 Reporting 报告 80 110 · Test Report · 测试报告 30 50 · Size Measurement · 计算工作量 20 20 · Postmortem & Process Improvement Plan · 事后总结

带UI的小初高数学学习软件

﹥>﹥吖頭↗ 提交于 2019-11-30 16:26:15
结对编程项目总结 一、项目需求分析与功能总结 (1)用户注册功能 用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册。 (2)设置密码功能 密码6-10位,必须含大小写字母和数字。 有两种场景需要修改密码: ①新注册用户首次设置密码,用户输入两次密码匹配后设置密码成功。 ②已注册用户登录状态下修改旧密码。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功。 (3)设置试卷功能 ①选择题目难度类型:小学、初中或高中。 ②设置题目数量。 (4)生成试卷功能 试卷以2种方式进行展示: ①界面选择题形式。全部题目为选择题,界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题...直至最后一题。 ②完整试卷文件保存。生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行。不同的试卷难度题目要求不同。 (5)试卷批改功能 ①计算随机题目的正确答案,随机作为某个选项。 ②最后一题提交后,界面显示分数,分数根据答对的百分比计算。 (6)各功能间的逻辑衔接与补充 ①用户在分数界面可选择退出或继续做题。 ②输入类的信息都需要符合实际的验证。例如:用户填入的是不是合理的手机号码,设置的密码是否符合规范。 二、如何复用个人项目实现结对编程项目

数据结构与算法——编程作业——第三章 栈与队列

有些话、适合烂在心里 提交于 2019-11-30 13:00:44
1:中缀表达式的值 总时间限制: 200ms 内存限制: 1024kB 描述 人们熟悉的四则运算表达式称为中缀表达式,例如(23+34*45/(5+6+7))。在程序设计语言中,可以利用堆栈的方法把中缀表达式转换成保值的后缀表达式(又称逆波兰表示法),并最终变为计算机可以直接执行的指令,得到表达式的值。 给定一个中缀表达式,编写程序,利用堆栈的方法,计算表达式的值。 输入 第一行为测试数据的组数N 接下来的N行,每行是一个中缀表达式。表达式中只含数字、四则运算符和圆括号,操作数都是正整数,数和运算符、括号之间没有空格。中缀表达式的字符串长度不超过600。 输出 对每一组测试数据输出一行,为表达式的值 样例输入 3 3+5*8 (3+5)*8 (23+34*45/(5+6+7)) 样例输出 43 64 108 提示 注意:运算过程均为整数运算(除法运算'/'即按照C++定义的int除以int的结果,测试数据不会出现除数为0的情况),输出结果也为整数(可能为负)。 中间计算结果可能为负。 这题有点儿变态qaq 解题思路是:中缀表达式-->后缀表达式-->计算后缀表达式 step 1: 中缀表达式-->后缀表达式 中缀表达式a + b*c + (d * e + f) * g,其转换成后缀表达式则为a b c * + d e * f + g * +。 转换过程需要用到栈,具体过程如下: 1

中缀表达式转后缀表达式

落花浮王杯 提交于 2019-11-30 12:01:29
之前一篇文章讲了逆波兰式计算器的实现,我们一般使用的是前缀表达式,但是对于计算机来说,后缀表达式是一种更好的选择。下面讲下中缀表达式转换为后缀表达式。 分析 中缀表达式之前说过,就比如1+((2+3)*4)-5这样的计算表达式,但是如何转换成后缀表达式呢? 1,定义两个栈s1和s2,运算符栈和用于存储中间结果的栈s2 2,从左往右扫描中缀表达式 3,遇到操作数,将其压入s2。 4,遇到(,直接将它压入s2 5,遇到),则一直弹出s1里面的有运算符,直到遇到(为止,并将弹出的结果压入s2,之后将一对括号丢弃 6,遇到有运算符时,先与栈顶的符号优先级做一个比较,优先级小于等于栈顶的字符,将栈顶的运算符弹出,反复比较,直到比栈顶的优先级大,就直接将该字符压入s1. 7,重复以上步骤,将s1剩余的操作符依次弹出并加到s2中。 8,s2中弹出,然后在做反序,就是后缀表达式的结果 代码实现 说明:本例中的用于保存结果的栈s2用list集合代替,因为用栈的话,最后的结果还需要做反序,十分不方便 package cn.mrlij.stack; import java.security.PublicKey; import java.util.ArrayList; import java.util.List; import java.util.Stack; /** * 中缀表达式转后缀表达式 */

【数据结构】P1449 后缀表达式

有些话、适合烂在心里 提交于 2019-11-27 22:46:19
【题目链接】 https://www.luogu.org/problem/P1449 【题目描述】 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。 如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。 输入格式 输入:后缀表达式 输出格式 输出:表达式的值 输入输出样例 输入 #1 3.5.2.-*7.+@ 输出 #1 16 说明/提示 字符串长度,1000内。 【题解】: 基础的用栈模拟求解过程,直接用栈存储,然后遇到操作符就进行运算。 具体可以看代码 【代码】 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N = 1e3+10; 5 6 char s[N]; 7 //3.5.2.-*7.+@ 8 9 ll Calc( ll u , ll v , char op){ 10 switch( op ){ 11 case '+' : return u+v; 12 case '-' : return u-v; 13 case '*' : return u*v; 14 case '/'

【数据结构】表达式的转换

こ雲淡風輕ζ 提交于 2019-11-27 18:09:39
【题目链接】 https://www.luogu.org/problem/P1175 题目描述 平常我们书写的表达式称为中缀表达式,因为它将运算符放在两个操作数中间,许多情况下为了确定运算顺序,括号是不可少的,而中缀表达式就不必用括号了。 后缀标记法:书写表达式时采用运算紧跟在两个操作数之后,从而实现了无括号处理和优先级处理,使计算机的处理规则简化为:从左到右顺序完成计算,并用结果取而代之。 例如: 8-(3+2*6)/5+4 可以写为: 8 3 2 6*+5/-4+ 其计算步骤为: 8 3 2 6 * + 5 / – 4 + 8 3 12 + 5 / – 4 + 8 15 5 / – 4 + 8 3 – 4 + 5 4 + 9 编写一个程序,完成这个转换,要求输出的每一个数据间都留一个空格。 输入格式 就一行,是一个中缀表达式。输入的符号中只有这些基本符号 0123456789+-*/^() ,并且不会出现形如 2*-3 的格式。 表达式中的基本数字也都是一位的,不会出现形如 12 形式的数字。 所输入的字符串不要判错。 输出格式 若干个后缀表达式,第 I+1 行比第 I 行少一个运算符和一个操作数,最后一行只有一个数字,表示运算结果。 输入输出样例 输入 #1 8-(3+2*6)/5+4 输出 #1 8 3 2 6 * + 5 / - 4 + 8 3 12 + 5 / - 4