+-*/运算符优先级计算模板
acwing3302
知识点一:有关unordered_map的优先级
头文件<unordered_map>,然后进行符号优先级定义
定义方式unordered_map<char,int>pr{ {'+',1},{'-',1},{'*',2},{'/',2}};其余没定义的默认为0
知识点二:头文件<cctype>中的isdigit()是判断是否是数字的函数是则返回true
#include<iostream>
#include<cstring>
#include<algorithm>
#include<stack>
#include<unordered_map>
using namespace std;
stack<int>num;
stack<int>op;
void eval(){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])){//例子(如果是12,那x=1,然后就是1×10加数字2)才得到数字12 x=x*10+str[j]-'0';j++;}i=j-1;//使得i指向2,i下一次++就是数字12的下一个位置 num.push(x);//把12入栈 }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;
}
//例子
//(1+2)*(2+3)
//先放入栈为op中【(+ num【1,2
//然后遇到)了开始执行eval弹出num使得b等于2,a等于1不能颠倒,op弹出+
//然后进行1+2=3,入栈变成num【3,再弹出(,op【 空了
//再op【*,(,+,num【3,2,3最后遇到)执行eval弹出num的b等于3,a等于2,op弹出+
//然后进行 2+3=5,入栈变成num【3,5然后进行剩余计算eval得出结果
//如果过程中有两个符号对碰,比如【*再进行+要入栈时,就会先执行eval把+先计算掉
例题:洛谷P10473
相关文章:
+-*/运算符优先级计算模板
acwing3302 知识点一:有关unordered_map的优先级 头文件<unordered_map>,然后进行符号优先级定义 定义方式unordered_map<char,int>pr{ {,1},{-,1},{*,2},{/,2}};其余没定义的默认为0 知识点二:头文件<cctype>中的isdigit()是判断…...
GPT 结束语设计 以nanogpt为例
GPT 结束语设计 以nanogpt为例 目录 GPT 结束语设计 以nanogpt为例 1、简述 2、分词设计 3、结束语断点 1、简述 在手搓gpt的时候,可能会遇到一些性能问题,即关于是否需要全部输出或者怎么节约资源。 在输出语句被max_new_tokens 限制,…...
FastDFS的安装及使用
分布式存储发展历程 前段时间 618 活动火热进行,正是购物的好时机。当我们访问这些电 商网站的时候,每一个商品都会有各式各样的图片展示介绍,这些图 片一张两张可以随便丢在服务器的某个文件夹中,可是电商网站如此 大体量的…...
C++ lambda表达式
目录 1.lambda表达式 1.1什么是Lambda表达式? 1.2Lambda表达式的语法 1.3捕捉列表 1.4函数对象与lambda表达式 1.lambda表达式 1.1什么是Lambda表达式? Lambda表达式是C11标准引入的一种匿名函数,它允许你在需要函数的地方直接编写代码…...
react页面定时器调用一组多个接口,如果接口请求返回令牌失效,清除定时器不再触发这一组请求
为了实现一个React页面使用定时器调用一组多个接口,并在任意一个接口请求返回令牌失效时清除定时器且不再触发这一组请求,可以遵循以下步骤: 1. 定义API调用函数:创建一个函数来处理一组API调用。每个API调用都应该检查响应状态以…...
Python的泛型(Generic)与协变(Covariant)
今天咱们聊聊Python类型标注中的泛型(Generic),与协变(Covariant)。 不了解类型标注的小伙伴,可以先看一看我的上一篇文章 “Python类型检查” Python 类型检查-CSDN博客 例子 这次我开个宠物商店。看下面代码。 class Animal:passclass Dog(Animal):passclass Cat(A…...
Python Typing: 实战应用指南
文章目录 1. 什么是 Python Typing?2. 实战案例:构建一个用户管理系统2.1 项目描述2.2 代码实现 3. 类型检查工具:MyPy4. 常见的 typing 用法5. 总结 在 Python 中,静态类型检查越来越受到开发者的重视。typing 模块提供了一种方式…...
OpenEuler学习笔记(六):OpenEuler与其他Linux服务器的区别是什么?
OpenEuler是一款基于Linux内核的开源服务器操作系统,与其他Linux服务器操作系统(如CentOS、Ubuntu Server等)存在多方面的区别,主要体现在以下几个方面: 一、社区与支持 OpenEuler:由华为发起并开源&…...
如何使用CRM数据分析和洞察来支持业务决策和市场营销?
如何使用CRM数据分析和洞察来支持业务决策和市场营销? 大家好!今天咱们聊聊一个特别重要的话题——如何利用客户关系管理(CRM)系统中的数据进行分析与洞察能够帮助我们做出更好的业务决策以及提升市场营销效果。其实啊࿰…...
MyBatis和JPA区别详解
文章目录 MyBatis和JPA区别详解一、引言二、设计理念与使用方式1、MyBatis:半自动化的ORM框架1.1、代码示例 2、JPA:全自动的ORM框架2.1、代码示例 三、性能优化与适用场景1、MyBatis:灵活的SQL控制1.1、适用场景 2、JPA:开发效率…...
SVN客户端使用手册
目录 一、简介 二、SVN的安装与卸载 1. 安装(公司内部一般会提供安装包和汉化包,直接到公司内部网盘下载即可,如果找不到可以看下面的教程) 2. 查看SVN版本 编辑 3. SVN卸载 三、SVN的基本操作 1. 检出 2. 清除认证数据 3. 提交…...
VsCode安装文档
一、下载 进入VS Code官网:Visual Studio Code - Code Editing. Redefined,点击 DownLoad for Windows下载windows版本 当然也可以点击旁边的箭头,下载Windows版本 或 Mac OS 版本 备注: Stable:稳定版Insiders&#…...
豆包MarsCode 蛇年编程大作战 | 高效开发“蛇年运势预测系统”
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 豆包MarsCode 蛇年编程大作战 | 🐍 蛇年运势预测 在线体验地址:蛇年…...
【动态规划】--- 斐波那契数模型
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 第N个泰波那契数模型 📌 题目解析 第N个泰波那契数 题目要求的是泰波那契数,并非斐波那契数。 &…...
生信软件管家——conda vs pip
pip vs conda: 安装过python包的人自然两种管理软件都用过, Pip install和Conda install在Python环境中用于安装第三方库和软件包,但它们在多个方面存在显著的区别 总的来说: pip是包管理软件,conda既是包管理软件&…...
代码随想录——串
文章目录 反转字符串反转字符串Ⅱ路径加密反转字符串中的单词动态口令字符串匹配重复的子字符串 反转字符串 344. 反转字符串 //前后对应交换 //0<->sSize-1 //1<->sSize-2 //... //i<->sSize-1-i,i0,1,...,(sSize-1)/2 void reverseString(char* s, int s…...
詳細講一下RN(React Native)中的列表組件FlatList和SectionList
1. FlatList 基礎使用 import React from react; import { View, Text, FlatList, StyleSheet } from react-native;export const SimpleListDemo: React.FC () > {// 1. 準備數據const data [{ id: 1, title: 項目 1 },{ id: 2, title: 項目 2 },{ id: 3, title: 項目 3…...
TDengine 与上海电气工业互联网平台完成兼容性认证
在工业数字化转型和智能化升级的浪潮中,企业对高效、可靠的数据管理解决方案的需求日益增长。特别是在风电智能运维、火电远程运维、机床售后服务等复杂多样的工业场景下,如何实现海量设备和时序数据的高效管理,已经成为推动行业升级的关键。…...
随机矩阵投影长度保持引理及其证明
原论文中的引理 2 \textbf{2} 2 1. \textbf{1. } 1. 引理 1 \textbf{1} 1(前提之一) 1.1. \textbf{1.1. } 1.1. 引理 1 \textbf{1} 1的内容 👉前提: X ∼ N ( 0 , σ ) X\sim{}N(0,\sigma) X∼N(0,σ)即 f ( x ) 1 2 π σ e – x 2 2 σ 2 f(x)\text{}…...
深度学习利用数据加载、预处理和增强数据提高模型的性能
深度学习数据预处理是一个关键步骤,旨在提高模型的性能和准确性。 通过数据加载、预处理和增强,可以显著提高深度学习模型的性能和准确性。在实际应用中,需要根据具体的数据和任务来选择合适的预处理和增强技术。 以下将详细论述并举例说明如…...
Audacity终极指南:5步掌握免费专业音频编辑全流程
Audacity终极指南:5步掌握免费专业音频编辑全流程 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 还在为音频编辑软件的高昂费用而犹豫?想要一款功能全面、完全免费的专业级音频处理工具&a…...
【雷达信号优化】第八章 阵列校准与误差补偿
目录 第八章 阵列校准与误差补偿 8.1 阵列误差模型 8.1.1 幅相误差 8.1.1.1 互耦效应建模 8.1.1.1.1 互耦矩阵的逆矩阵简化 8.2 阵列自校准算法 8.2.1 信号子空间拟合算法 8.2.1.1 交替优化策略 8.2.1.1.1 信源方向与误差参数的迭代更新 8.2.2 辅助源校准 8.2.2.1 单…...
别再傻傻匀速拖滑块了!用Python模拟真人鼠标轨迹,轻松过Geetest验证码
突破验证码防线:Python模拟人类行为轨迹的实战艺术 验证码系统正变得越来越智能,Geetest等平台已经能够通过分析用户行为模式来区分人类和机器。传统的匀速滑块操作在这些系统面前几乎无所遁形。本文将带你深入理解现代验证码系统的工作原理,…...
Qwen-Image-2512-SDNQ Web服务实战:WebUI下载功能与浏览器兼容性全平台测试
Qwen-Image-2512-SDNQ Web服务实战:WebUI下载功能与浏览器兼容性全平台测试 1. 项目概述与核心价值 今天我要和大家分享一个特别实用的AI图片生成项目——基于Qwen-Image-2512-SDNQ-uint4-svd-r32模型的Web服务。这个项目最大的亮点在于,它把复杂的AI图…...
拆解Lite-HRNet的‘轻量’魔法:ShuffleBlock与CCWBlock如何省下80%算力
拆解Lite-HRNet的‘轻量’魔法:ShuffleBlock与CCWBlock如何省下80%算力 在计算机视觉领域,高分辨率网络(HRNet)因其出色的特征保持能力而备受推崇,但随之而来的计算成本却让许多实际应用望而却步。Lite-HRNet的出现&a…...
别光看公式了!用Multisim 14.0手把手仿真这8个经典运放电路(附工程文件)
别光看公式了!用Multisim 14.0手把手仿真这8个经典运放电路(附工程文件) 在电子工程的学习过程中,运算放大器(Op-Amp)无疑是一个让人又爱又恨的存在。爱的是它强大的功能和广泛的应用,恨的是那些…...
SpringBoot 静态资源加载失败:favicon.ico 缺失问题解析
1. 为什么你的SpringBoot项目总在报favicon.ico缺失? 每次启动SpringBoot项目时,控制台总是刷出一堆红色警告,其中最让人头疼的就是"No static resource favicon.ico"这个错误。作为一个踩过无数次坑的老司机,我可以负…...
Matlab APP Designer避坑指南:字符进度条不更新的解决方案
Matlab APP Designer避坑指南:字符进度条不更新的解决方案 在Matlab APP Designer开发过程中,进度条是用户交互体验的重要组成部分。许多开发者都遇到过这样的困扰:精心设计的字符进度条在运行时却"卡住"不动,直到整个计…...
前端开发者必看:5个提升AI提示词效果的实战技巧(附代码示例)
前端开发者必看:5个提升AI提示词效果的实战技巧(附代码示例) 当ChatGPT帮你生成React组件却总跑偏,当Copilot给出的代码建议总差那么点意思——作为前端开发者,你可能已经意识到:AI工具的表现力,…...
DSP28335 EPWM模块关键寄存器配置实战指南
1. EPWM模块基础与核心寄存器概览 DSP28335的增强型PWM(EPWM)模块是电机控制、电源转换等实时控制系统的核心外设。我第一次接触这个模块时,被它强大的灵活性震撼到了——6对独立的EPWM通道,每对都能生成两路互补或独立的PWM波形。…...
