算法基础之表达式求值
算法基础之表达式求值
-
中序表达式求值 用栈
-

-
将字符和数字分别用栈存储 由下往上计算
-
左子树算完再算右子树 判断方法:当前符号优先级<=前一个符号优先级 则左右子树已遍历完
-
#include<iostream>#include<cstring>#include<stack>#include<algorithm>#include<unordered_map>using namespace std;//分别存储数字和符号stack<int> num;stack<int> op;void eval(){//先取b 再取a auto b = num.top(); num.pop();auto a = num.top(); num.pop();auto c = op.top(); op.pop();int x;if(c=='+') x=a+b;else if(c=='-') x=a-b;else if(c=='*') x=a*b;else x=a/b;//算完放回栈 作为一颗子树的值num.push(x);}int main(){//用哈希表存储 字符及其优先级unordered_map<char,int> pr{{'+',1},{'-',1},{'*',2},{'/',2}};string str;cin>>str;for(int i=0;i<str.size();i++){auto c =str[i];//数字if(isdigit(c)){int x=0,j=i;//可能是连续的数字 一个大数while(j<str.size()&&isdigit(str[j])){x = x*10 + str[j++] - '0';}//因为退出这个if以后 j++已经执行 i++又做自增 所以会多1 要减去i = j-1;num.push(x);}//左括号放进栈else if(c=='(') op.push(c);//有括号执行之前存入的符号else if(c==')'){while(op.top() != '(') eval();//删掉左括号op.pop();}//符号else {//如果栈顶运算符优先级较高,先操作栈顶元素再入栈while(op.size()&&pr[op.top()]>=pr[c]) eval();//如果栈顶运算符优先级较低,直接入栈op.push(c);}}//没有操作完的继续操作(最外层没有括号的没操作)while(op.size()) eval();//栈顶元素为答案cout<<num.top()<<endl;return 0;}
-
相关文章:
算法基础之表达式求值
算法基础之表达式求值 中序表达式求值 用栈 将字符和数字分别用栈存储 由下往上计算 左子树算完再算右子树 判断方法:当前符号优先级<前一个符号优先级 则左右子树已遍历完 #include<iostream>#include<cstring>#include<stack>#include&l…...
【matlab程序】图像最大化填充画布
【matlab程序】图像最大化填充画布 不做任何修饰: 修饰: 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画布和坐标轴 【Pytho…...
C3 多媒体查询
文章目录 前言CSS3 多媒体查询CSS2 多媒体类型CSS3 多媒体查询浏览器支持多媒体查询语法CSS3 多媒体类型多媒体查询简单实例 媒体类型媒体功能更多实例后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:CSS 🐱👓博…...
网站监控是什么
在当今高度互联的世界中,网站已成为企业和个人成功的关键因素。无论是提供产品或服务,还是建立品牌形象,网站都是不可或缺的工具。然而,随着互联网用户对访问速度和用户体验的高要求,保持网站的稳定性和可用性变得至关…...
基于DCT变换的图像压缩解压缩算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、DCT变换原理 4.2、基于DCT的图像压缩 4.3、基于DCT的图像解压缩 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...................…...
基于单片机压力传感器MPX4115检测-报警系统proteus仿真+源程序
一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPX4115采集压力值、DS18B20采集温度值送到液晶1602显示。 3、按键设置报警值。 4、蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /*********************************…...
3.读取字符串【2023.11.25】
1.问题描述 请使用 input 函数读取一串字符串,然后将其输出。 2.解决思路 输入一行字符串。 将读入的变量输出。 3.代码实现 strinput("请输入一个字符串") print(str)4.运行结果...
C/C++ 通过SQLiteSDK增删改查
SQLite,作为一款嵌入式关系型数据库管理系统,一直以其轻量级、零配置以及跨平台等特性而备受青睐。不同于传统的数据库系统,SQLite是一个库,直接与应用程序一同编译和链接,无需单独的数据库服务器进程,实现…...
软件测评中心进行安全测试有哪些流程?安全测试报告如何收费?
在当今数字化时代,软件安全测试是每个软件开发团队都不能忽视的重要环节。安全测试是指对软件产品进行系统、全面的安全性评测与检测的过程。它旨在发现并修复软件中存在的漏洞和安全隐患,以确保软件能够在使用过程中保护用户的数据和隐私不被非法访问和…...
20年的大厂技术总监给云原生从业者的建议
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生的英文可拆解为Cloud和Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序设计之初就被考虑部署到云的环境,为云而生,…...
音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十)
介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...
京东数据分析:2023年10月京东彩妆销售大数据采集
鲸参谋监测的京东平台10月份彩妆市场销售数据已出炉! 鲸参谋数据显示,今年10月份,京东平台上彩妆市场的销量将近430万,环比增长约21%,同比下滑约3%;销售额将近5.8亿,环比增长约7%,同…...
uniapp-微信授权登录
目录 一、微信授权登录的介绍 1.用户在微信内点击登录按钮,跳转到授权页面; 2.用户同意授权后,返回授权码给开发者服务器; 3.开发者服务器通过授权码向微信服务器发送请求,获取用户信息; 4.微信服务器…...
在vscode下将ipynb文件转成pdf的方法
正常情况下,可以在vscode的ipynb界面点击上面的三个点,里面有export,可以选择直接输出html和pdf,但是需要latex,由于按扎u安装麻烦,所以我换了一种方法。 ----------------------------------------------…...
css之选择第一个或最后一个元素、第n个标签、选择偶数或奇数标签、选择最后n个标签、等差数列标签的选择、first、last、nth、child
MENU first-child选择列表中的第一个标签last-child选择列表中的最后一个标签nth-child(n)选择列表中的第n个标签nth-child(2n)选择列表中的偶数位标签nth-child(2n-1)选择列表中的奇数位标签nth-child(nm)选择从第m个到最后一个标签nth-child(-nm)选择从第1个到第m个nth-last-…...
CSS实现三角形
CSS实现三角形 前言第一种:bordertransparent第二种borderrgb使用unicode字符 前言 本文讲解三种实现三角形的方式,并且配有图文以及代码解说。那么好,本文正式开始。 第一种:bordertransparent border是边框,而transparent是透明的颜色&a…...
mysql 与 Oracle 的区别,oracle 与 mysql分页查询的区别
文章目录 mysql 与 Oracle 的区别1、并发性2、一致性3、事务4、数据持久性5、提交方式6、逻辑备份7、热备份8、sql语句的扩展和灵活性9、复制10、性能诊断11、权限与安全12、分区表和分区索引13、管理工具 oracle 与 mysql分页查询1.Oracle分页查询中提供了一个伪列:…...
原生实现底部弹窗效果 h5 小程序
<template><div class"home"><div class"btn" click"showPopupshow">弹出底部蒙层</div><div class"popup " catchtouchmove"true" :class"showPopup" ><div class"mask&q…...
最新Midjourney绘画提示词Prompt教程无需魔法
最新Midjourney绘画提示词Prompt教程无需魔法使用 一、AI绘画工具 SparkAi【无需魔法使用】: SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypes…...
大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记
Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记 一、Abstract二、引言三、相关工作实例感知通过类别名进行检索通过语言表达式的检索通过指代标注的检索 统一的视觉模型Unified Learning ParadigmsUnified Model Architectures 四、方法4.1 Pr…...
服务了50家客户后,我发现:AI转型成功的企业,老板都做对了这三件事
过去几年,我深度服务了50多家推进AI转型的企业,亲眼看着一些企业从AI小白成长为行业标杆,也目睹了更多企业在各种坑里挣扎。复盘这些成败案例,我发现一个有意思的现象:AI转型成功的企业,技术路线千差万别&a…...
线性筛还能这么用?一个‘球盒问题’带你玩转因子个数统计与模数玄机
线性筛的魔法改造:用因子个数统计破解球盒难题 在算法竞赛中,我们常常会遇到一些看似是组合数学问题,实则暗藏数论玄机的题目。今天要探讨的这个"球盒问题"就是典型代表——将n个球放入n个盒子,要求每个盒子里的球与其编…...
别再傻傻分不清了!BIOS里的SCI、SMI和IRQ到底有啥区别?用大白话给你讲明白
BIOS中的SCI、SMI和IRQ:用生活场景理解计算机中断机制 刚接触计算机底层开发的朋友,第一次看到BIOS设置里那些晦涩的缩写——SCI、SMI、IRQ,是不是感觉头都大了?别担心,今天我们就用最生活化的例子,帮你彻底…...
车载Camera接口与图像处理技术全景解析
1. 车载Camera系统的基础架构 车载Camera系统是现代智能汽车的核心感知部件之一,它就像汽车的"眼睛",帮助车辆感知周围环境。一套完整的车载Camera系统通常由三大部分组成:图像传感器、接口协议和图像处理模块。 图像传感器负责将光…...
C# .NET 与 SAP RFC 接口交互:从参数映射到实战封装
1. SAP RFC接口与.NET集成的核心挑战 在企业级应用开发中,SAP系统往往承载着核心业务流程,而现代应用开发又大量采用.NET技术栈。要让这两个不同生态的系统高效对话,RFC(Remote Function Call)是最常用的桥梁技术。但实…...
2026届必备的五大AI辅助论文助手解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 智能化写作辅助工具一键论文生成器,能按照用户所输入的标题或者关键词࿰…...
从光敏电阻到麦克风:用单片机AD/DA和运放搞定传感器信号采集(附电路分析)
从光敏电阻到麦克风:用单片机AD/DA和运放搞定传感器信号采集(附电路分析) 当我们需要将现实世界中的光强、温度或声音信号转化为数字信号进行处理时,传感器信号采集系统就成为了连接物理世界与数字世界的桥梁。本文将带你从零开始…...
C++数据结构--回溯算法
一.什么是回溯算法算法思想:在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根节点出发深度搜索解空间树。当搜索到某一节点时,要先判断该节点是否包含问题的解;如果包含就从该节点出发继续深度搜索下去,否则逐层向上回溯。一般在搜索的过程中都会添加相应的剪枝函数…...
看得见的数据结构:Android可视化学习终极指南
看得见的数据结构:Android可视化学习终极指南 【免费下载链接】DS4Android 看得见的数据结构Android版---Show the Data_Structure power by Android View 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Android 你是否曾在学习数据结构时感到困惑&#…...
医学影像分析新宠:Swin-Unet凭什么比传统U-Net更强?深入对比实验与避坑指南
医学影像分析新宠:Swin-Unet凭什么比传统U-Net更强?深入对比实验与避坑指南 在医学影像分析领域,图像分割技术一直是计算机辅助诊断的核心支柱。从早期基于阈值的简单分割到如今深度学习的复杂建模,这项技术正在经历从"看得见…...
