- 博客(7)
- 收藏
- 关注
原创 C++利用数组模拟栈进行中缀表达式求值--附源码 中缀表达式算法
//中缀表达式求值//方法:开两个栈,操作符栈和数组栈//从左到右扫描中缀表达式//1. 当前位为数字:继续向后扫描直到读取完整个数字,将其放入数字栈中//2. 当前位为左括号,直接放入操作符栈中等待和右括号配对//3. 当前位为右括号,从操作符栈中读取到上一个左括号之后的所有运算符,// 每读取一个就取数字栈中两个元素进行计算,并把结果放入栈中//4. 当前位为运算符,如果栈顶元素优先级更高或者和当前运算符相等,就弹出// 栈顶操作符,并进行计算,知道栈顶元素为左括号或者栈顶
2024-03-07 22:29:39 971 1
原创 KMP算法--实现匹配字符串的查询
1.构建next数组,方法是i从2开始计算每一位的next值,注意每次判断时是用p[i]和p[j+1]比较,如果不相等j就回退,j=ne[j] ,最后跳出循环判断是否p[i]和p[j+1]相等,相等就有j++。最后更新ne[i]=j。相当于每次的构建是基于以前的结果的,如果当前的j>0说明上一位的匹配是有结果的,那么这时候如果再次匹配的话,当前位的next值就是上次+1,如果不匹配了,就采用回退的方式,这样能尽可能找到匹配的,如果多次以后还不匹配j会为0。
2023-11-23 19:29:18 93
原创 高度为h的平衡二叉树的最少节点数(BFS+队列)
树从根结点开始往下数,叶子结点所在的最大层数称为树的高度(根节点在第1层)。某节点的左子树与右子树的高度(深度)差即为该节点的平衡因子,若一颗二叉树的所有节点的平衡因子都在集合{-1,0,1}中,则称该二叉树为平衡二叉树,现在要求你找出高度为h的平衡二叉树的最少节点数。
2023-11-16 19:32:08 560 1
原创 C++实现大整数计算器(高精度加减乘除)——————极易理解,源码直用
C++语言不像python等语言,由于其天然的特性,可以支持超大整数的计算。C++的最大整型long long范围仅有-9223372036854775808到9223372036854775807这显然无法满足某些情况下的需要,但是我们可以将超大整数存入数组,模拟加减乘除的过程,进而计算结果。以上就是今天要讲的内容,本文仅仅简单介绍了C++高精度计算的一种实现方法,后续可以开发C++专属的大整数类来进一步方便使用。
2023-11-14 18:45:37 1244 4
原创 N皇后问题的DFS 解法(深度优先搜索解法)——极易理解
3. 对于每一行,遍历所有可能的列,从而确定一个皇后的位置,并且使该列的状态被标记为。对于这个问题,因为是求最终的摆法数,也就是要遍历所有可能的状态,由此想到应该用。行,要求每个皇后不同行,那么我们可以确定每行。5.如果递归到n个皇后,方案数+1,然后返回。依次对每行的皇后进行位置安排,即从第。是指在 n x n 的棋盘上要摆。(深度优先搜索)解决。
2023-11-08 19:31:54 645 1
原创 切面条问题——问题的转化
在我看来这个问题可以这样理解,对折两次切一刀可以看成把面条展开成对折一次的状态然后切两刀,同理对折三次切一刀可以看成把面条展开然后切4刀……那么对折10次切一刀就可以看成是切2^9刀,这样一共产生了512*2+1根面条。
2023-10-08 23:42:48 97 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人