首页 > 编程语言 >算法——加减乘除计算器

算法——加减乘除计算器

时间:2023-07-14 13:12:53浏览次数:51  
标签:优先级 数字 地弹 栈顶 运算符 括号 算法 计算器 加减乘除

操作符号栈,数字栈

遍历字符

  • 若是低优先级运算符(加、减),不断地弹出高优先级运算符(乘、除)栈顶运算符,直到栈为空或者栈顶不为高优先级运算符(乘、除)
  • 若是左括号运算符,加入操作栈,若是右括号运算符,不断地弹出栈顶运算符,直到栈顶为 左括号
  • 若是数字,加入数字栈

遍历完成后,若操作栈不为空,继续弹出栈顶运算符,直到栈顶为空

弹出栈顶运算符:执行运算,并弹出相关运算符号和数字。

花括号展开 II

标签:优先级,数字,地弹,栈顶,运算符,括号,算法,计算器,加减乘除
From: https://www.cnblogs.com/sanguoasd/p/17187404.html

相关文章

  • 算法——排列组合
    排列、组合适合回溯法,保存当前状态什么时候使用used数组,什么时候使用begin变量有些朋友可能会疑惑什么时候使用used数组,什么时候使用begin变量。这里为大家简单总结一下:排列问题,讲究顺序(即[2,2,3]与[2,3,2]视为不同列表时),需要记录哪些数字已经使用过,此时用**u......
  • 算法——前缀和 + 两数相加、相减
    求数组中,连续区间的大小,可使用前缀和相减得到。进阶变形若想得到区间大小等于target,暴力枚举前缀和相减。复杂度O(n^2)优化算法:将每次求得的前缀和放入hashMap中,S[j]-S[i]==target,(j>i)求出S[j]后,判断hashMap中是否存在S[i]=S[j]-target值,复杂度O(n)参考链接使数......
  • 算法——格雷编码、霍夫曼编码
    格雷编码当n=0时,格雷码序列为[0]。将n-1编码翻转,翻转部分的n-1位设置位1,获得n位编码。霍夫曼编码那么为什么通过哈夫曼编码后得到的二进制码不会有前缀的问题呢?这是因为在哈夫曼树中,每个字母对应的节点都是叶子节点,而他们对应的二进制码是由根节点到各自节点的路径所决定......
  • ACM算法竞赛入门和进阶指南
    文章目录如下,将从以下八个方面展开,接下来进入正文。一、ACM竞赛ACM程序设计竞赛是三人组队赛,一场比赛5个小时,通常有10~13个问题,三人合力解决,比赛时三人只能使用一台电脑。每年有多个赛站,但每人一年只能参加两场区域赛(不算邀请赛、省赛)。二、入门方式可以参考下方回答。AC......
  • 文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题
    文心一言VS讯飞星火VSchatgpt(58)--算法导论6.42题二、试分析在使用下列循环不变量时,HEAPSORT的正确性:在算法的第2~5行for循环每次迭代开始时,子数组A[1..i]是一个包含了数组A[1..n]中第i小元素的最大堆,而子数组A[i+1..n]包含了数组A[1..n]中已排序的n-i个最大元素?......
  • 蚁群算法求解TSP
    蚁群算法的作业,本来想用C++写的。研究了半天得出结论:......
  • 基础算法
    基础算法1.二分2.贪心3.DP3.1介绍DP我们先从一道题引出DP。一个\(n\timesm\)的矩阵,沁志从左上角的家出发,到右下角去上学。每次只能往下或右走,问沁志从家到学校有多少种路线?答案对\((10^9+7)\)取模。\(n,m\le1000\)......
  • 归纳法证明欧几里得算法
    前言    本证明思路来源于《数学分析Apostol》定理1.6每一对非负整数a与b都有一个公因数d,形为其中x和y都是整数,且a,b的每一个公因数都能整除这个d(显然这个d就是最大公因数)证明    设且    由对称性,不妨设        Step.1        ......
  • 自动对焦算法
    自动对焦算法是相机系统中的重要组成部分,其作用是在拍摄图像时自动调整相机镜头使图像达到最清晰的效果。常见的自动对焦算法有:唯一对焦算法:通过对图像模糊程度的分析来确定对焦位置。基于距离的对焦算法:通过测量相机与物体之间的距离来确定对焦位置。基于梯度的对焦算法:通过......
  • python实现迪杰斯特拉算法
    Dijkstra算法可以计算出在有权图中从某个起点出发到其他任何一点的最短路径长度算法思想:迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。定义起点s,终点t,集合U表示还没有找到起点到该点的最短路......