NYOJ467 中缀式转后缀式 java

从零搭建医疗化验单识别系统:深度学习+OCR实战教程(附数据集) 本文详细介绍了如何从零开始构建一个医疗化验单智能识别系统。通过融合深度学习和OCR技术,系统能够应对版式多样、内容专业的医疗单据,实现从文本检测、识别到关键信息结构化抽取的全流程。文章提供了数据集处理、模型选型、训练微调及工程化部署的实战指南,并分享了避坑经验与性能优化策略,为开发者解决医疗信息化痛点提供了完整的技术方案。 阅读详情

题目链接:打开题目

表达式,我们一般喜欢于写中缀形式的,也就是num1 op num2,但是计算的时候是要考虑优先级的。而后缀表达式num1 num2 op是不需要考虑优先级的。

网上很多都是用栈来实现的,我这个是用二叉树的结构来实现的。可以很容易想到,中缀表达式就是一个表达式二叉树的中序遍历的结果,而后续表达式则是后序遍历的结果。

好,那么我们的思路出来了,就是根据中缀式构建二叉树,再后续遍历输出二叉树。

做ACM题到现在,觉得大多数题都是一个模拟的过程,说白了,就是人思考清楚了,那么就能编程实现。那我们想一想该怎么转呢?  举个例子:

1*(1-2)-5=

1.构建二叉树

a) 找到当前表达式运算符级别最低的(pos=k)

b) Substring(0,k)为左子树,递归建立

c) Substring(k+1)为右子树,递归建立

2.postorder()

 

上码:

 

import java.io.BufferedInputStream;

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

Scanner scanner = new Scanner(new BufferedInputStream(System.in));

int cases;

String input;

Tree T = null;// 根指针

cases = scanner.nextInt();//多少组测试数据

while (cases-- != 0) {

input = scanner.next();

input = input.substring(0, input.length() - 1);

// 去掉多余的括号,例如((1-2))

while (canDo(input)) {

input = input.substring(1, input.length() - 1);

}

T = createTree(T, input);

postOrder(T);

System.out.println("=");

}

 

scanner.close();

}

 

private static void postOrder(Tree t) {

if (t == null) {

return;

}

postOrder(t.leftTree);

postOrder(t.rightTree);

System.out.print(t.root + " ");

}

 

private static Tree createTree(Tree T, String str) {

if (str.equals("")) {//当前表达式为空

return null;

}

String[] trees = parseTree(str);// 根,左,右

T = new Tree();

T.root = trees[0];

T.leftTree = createTree(T.leftTree, trees[1]);

T.rightTree = createTree(T.rightTree, trees[2]);

return T;

}

 

private static String[] parseTree(String str) {

String[] res = new String[3];

char opRoot = ' ';

int k = -1, num = 0;// 括号数

for (int i = 0; i < str.length(); i++) {

char c = str.charAt(i);

// 括号外的运算符,是操作符,运算符级别低

if (num == 0 && isOp(c) && rank(c) <= rank(opRoot)) {//一定要注意这个<=,例如3/4/5,应该先计算3/4!!!!

opRoot = c;

k = i;//记录当前表达式中优先级最低的那个运算符的位置

} else if (c == '(') {

num++;

} else if (c == ')') {

num--;

}

}

// 找到运算符了

if (k != -1) {

res[0] = new String("" + str.charAt(k));

String leftTree = str.substring(0, k);

while (canDo(leftTree)) {//去括号

leftTree = leftTree.substring(1, leftTree.length() - 1);

}

res[1] = new String(leftTree);

String rightTree = str.substring(k + 1);

// 去掉子树两边的括号

while (canDo(rightTree)) {

rightTree = rightTree.substring(1, rightTree.length() - 1);

}

res[2] = new String(rightTree);

} else {// 没找到

res[0] = str;

res[1] = "";

res[2] = "";

}

 

return res;

}

 

private static boolean canDo(String tree) {

int num = 0;

boolean flag = false;

for (int i = 0; i < tree.length() - 1; i++) {

char c = tree.charAt(i);

if (c == '(') {

num++;

flag = true;

} else if (c == ')') {

num--;

}

if (flag && num == 0) {

return false;

}

}

if (flag && tree.charAt(0) == '(')

return true;

return false;

}

 

private static boolean isOp(char c) {

return c == '-' || c == '+' || c == '/' || c == '*';

}

 

private static int rank(char c) {

if (c == '-' || c == '+') {

return 1;

} else if (c == '/' || c == '*') {

return 2;

}

return 3;

}

}

//二叉树的类

class Tree {

String root;

Tree leftTree;

Tree rightTree;

}

        


【图像超分】论文精读:Interpreting Super-Resolution Networks with Local Attribution Maps(LAM) 论文题目:Interpreting Super-Resolution Networks with Local Attribution Maps —— 用局部归因图解释超分辨率网络CVPR 2021!必读文章!必须会的可视化手段!很多文章中都会对比LAM!图像超分辨率 (SR) 技术发展迅速,受益于深度网络的发明及其连续突破。然而,众所周知,深度学习和深度神经网络很难解释。SR网络继承了这种神秘的性质,很少有作品试图理解它们。在本文中,我们对 SR 网络进行了归因分析。 阅读详情

相关推荐

【MFRC522】STM32与MFRC522的SPI通信优化及常见问题解析

本文深入解析了STM32与MFRC522进行SPI通信的优化方法与常见问题。从基础的硬件连接到SPI时序优化,再到关键的寄存器配置(如RFCfgReg设为0x4F以提升读卡稳定性),文章提供了详细的调试技巧和实战排坑指南,帮助开发者实现稳定高效的IC读卡应用。

yhn45678901的博客 841

中缀式转后缀式工具类实现

我们经常用到的表达式叫中缀式,如:1+2,a+b*c; 还有另外一种表达式叫后缀式,叫逆波兰式。 原理我就不赘述了,网上很多介绍。 现在写了个Java中缀式转后缀式的工具类,现分享源码如下: 操作符常量接口: /** * * 操作符常量接口:主要为了保存常量 * * @author dobuy * 修改时间: 2013-5-22 * */ public i

编码之旅 1991

从临床试验到互联网AB测试:边缘结构模型(MSM)如何解决‘时依性混杂’这个老大难问题

本文探讨边缘结构模型(MSM)如何解决时依性混杂问题,适用于临床试验和互联网AB测试。通过逆概率加权(IPTW)等方法,MSM能有效剥离混杂效应,准确评估长期干预效果。文章结合跨领域案例,详细解析MSM的核心原理、实施步骤及在推荐算法效果评估中的实战应用,帮助读者掌握这一先进因果推断工具。

weixin_28725949的博客 207

nyoj467 中缀转后缀

http://nyoj.top/problem/467 #include &lt;bits/stdc++.h&gt; using namespace std; int cmp[4][4]={//'+''-''*''/'的优先级 1表示栈顶比当前字符串的操作符优先级高 1,1,-1,-1, 1,1,-1,-1, 1,1,1,1, 1,1,1,1, }; bool isnum(char ...

skykone1的博客 190

故障诊断知识库建设指南

从数据融合到知识图谱构建,从智能推理引擎开发到动态进化机制落地,故障诊断知识库的建设路径已形成 “数据 - 知识 - 智能” 的闭环体系。随着大模型技术的深度融入,知识库将实现从 “规则驱动” 到 “认知推理” 的跨越 —— 通过自然语言理解解析复杂故障描述、多模态分析融合图像与信号数据、预测性算法推演故障发展趋势,持续提升诊断的精准度与前瞻性。

极昆仑智慧 1232

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 717

中缀式变后缀式&&http://acm.nyist.net/JudgeOnline/problem.php?pid=467

描述 人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。 输入 第一行输入一个整数n,共有n组测试数据(n&lt;10)。 每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式的中缀式,每个运算式都是以“=”结束。这个表达...

feiliboos 243

Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现

Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 一、简单介绍 二、Car Racing 2D (2D赛车) 游戏内容与操作 三、相关说明 四、游戏代码框架 五、知识点 六、游戏效果预览 七、实现步骤 八、工程源码地址 九、延伸扩展 一、简单介绍 Unity 游戏实例开发集合,使用简单易懂的方式,讲解常见游戏的开发实现过程,方便

仙魁XAN 7702

nyoj467中缀式变后缀式

中缀式变后缀式 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。 输入第一行输入一个整数n,共有n组测试数据(n 每组测试数据只有一行,是

逆水行舟 888

基于 YOLOv26 的 PCB 板缺陷检测:工业级视觉实战

本文提出了一种基于YOLOv26的PCB板缺陷检测系统,通过深度学习技术实现对PCB板缺陷的自动化检测。系统能够识别短路、开路、焊点不良等8种常见缺陷,具有高精度、多类别分类和实时推理等优势。文章详细介绍了系统架构,包括数据采集、预处理、YOLOv26模型检测和后处理模块。在代码实现部分,给出了环境配置、数据预处理与增强的具体方法,使用Albumentations库进行图像增强处理。该系统为电子制造业提供了高效、准确的PCB质量检测解决方案,显著提升了检测效率和准确性。

一键难忘的博客 339

Qt界面美化-飞扬青云自绘控件插件的使用-避免采坑

1、先上一个集成到QtCreater中的效果图: 2、飞扬青云自绘控件插件下载地址:https://gitcode.net/mirrors/feiyangqingyun/qucsdk?utm_source=csdn_github_accelerator 3、集成插件到QtCreater中的方法: (1)、查看自己使用的QtCreater的版本信息,我的:Qt 5.15.2 MSVC2019 64位 (2)插件下载下来后工程预览: 我选择msvc版本的SDK,打开找到匹配的SDK:...

小米的修行之路 2793

中缀式变后缀式(nyoj 467)

中缀式变后缀式 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。 输入第一行输入一个整数n,共有n组测试数据(n 每组测试数据只有一行,是

23333333 718

华为OD机试真题2025双机位C卷 Java&Go 实现【统计员工影响力分数】

华为OD机试真题2025双机位C卷 C语言 实现【统计员工影响力分数】假设你是大型科技公司的数据分析师,负责分析公司内部员工的社交网络。你需要编写一个函数来计算每个员工的影响力分数。影响力分数定义为该员工直接和间接影响的员工数量。 输入描述

MISAYAONE的博客 281

nyoj 题目467 中缀式变后缀式

中缀式变后缀式 时间限制:1000 ms  |            内存限制:65535 KB 难度:3 描述 人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。 输入第一行输入一个整数n,共有n组测试数据(n 每组测试数据只有一

成长ing 382

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

南阳 oj 中缀式变后缀式 题目467 数据结构 NYOj

给大家推荐个靠谱的公众号程序员探索之路,大家一起加油  #include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; #define N 1000 using namespace std; char s[N];//存储字符串 char str1[N];//存储'o'-到'9'的字符 char str2[N]...

yueloveme的博客 732

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

nyoj166 小珂的数学题

题目:点击打开链接 题目大意:给定一个字符串,该字符串是升序的,问它是字符串中的第几个? 思路:只要算出该字符串前面有多少个就可以了,然后加一就是最终答案,这里麻烦的是求该字符串前面有多少个,分为两部分,一部分是字符串长度小于该字符串的,另一部分是长度等于该字符串的但在该字符串前面的字符串!由于是字符串是升序的,即是n个字母只能组合成一个序列,那就应该对应着n个字母的组合数!  

ghw_study的专栏 1266

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

nyoj1170 最大的数

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1170 题目分析:刚看到这个题的时候,就想着怎么模拟添加*/+/(),可是想想没有这么麻烦,最大的数肯定是乘出来的嘛。。。当然了,还要处理一些要细节   1.数组的中第一个没有前驱,最后一个没有后继,要单独处理   2.当某个数为1时,应该加到旁边的数上,要往较小的一个加(a

ghw_study的专栏 1160

nyoj109 数列转换

题目:点击打开链接 理解:有的题目,一看就应该是模拟,而有的题目规律性很强,我们看这道题是从(an-1,an,an+1)转化到(an-1+an,-an,an-1+an),三个数的和是不变的。 那我们就想到是否数列额总和一样,两个数列就可以互达呢? 在我们下结论之前肯定要举几个例子,验证一下。 好现在考虑(1 2 3)(1 3 2) (1 2 3)→(3,-2,5)→(1 2 

ghw_study的专栏 854

nyoj 123士兵杀敌(四)

题目大意:1~M个士兵,初始的时候,每个人的军工都是零,动态连续增加军工,动态查询某个人的军工!!   思路:由于是动态的,连续插入,单个查询,是典型的插线问点树状数组!!! 对于树状数组的lowBit()和updat

ghw_study的专栏 803

nyoj 数论 541最强DE 战斗力

踏实做事,安心做人,这是最后的斗争,英特纳雄奈尔一定会实现。 题目分析:这题是一个数论题,第一开始我自己找规律的时候,发现任何一个正整数分解的字数都能转为2和3的乘积。。。 后来就baidu了一下,有这么一定数论定理! 定理:当把一个正整数n拆分加数因子的乘积时,尽可能的拆为3,若最后剩1,就拿回一个3凑成4,这样就是最大的乘积。 知道里定理,用java用的大数,就OK啦 代码:

ghw_study的专栏 776

nyoj1013 除法表达式

题目:点击打开链接   分析:可易知,X1一定在分子上,X2一定在分母上,要想使E的结果为整数,即Xk尽量要在分子的上,可将E改写成:X1/X2/(X3/X4/X5/X6.../Xk)=(X1*X3*X4*X5*X6...*Xk)/X2,现在简单了吧?   方法1:用大数相乘,再用大数求余 方法2:从X1到Xk依次跟X2约分,知道X2为1时结束.   上码:#include #inc

ghw_study的专栏 765

nyoj 130相同的雪花

题目大意:有多组测试数据,每组有多组数组,每组有六个数,判断是否含有两组一样的数据(六个数围成圈,看看能否重合)   思路:由于是判断一个集合中是否存在相同的元素,很容易就想到了SET:集合,而java里面给我们提供了HashSet这种数据 结构,HashSet也是依据hash表的思想设计的,不清楚的可以上网了解一下HashSet的用法,在判断是否含有两个相同的雪花的时候, 用一个for循

ghw_study的专栏 750

nyoj743 复杂度

题目:点击打开链接 个人理解:我刚开始做的时候,是按照这个程序走的,i=?,j=?,k=?,发现规律不太好找,在这里提示一下,找规律的题一定要多试几次规律。 后来,看了一些csdn上的博文,才发现这道题的巧妙,我们看一下那个循环,i最小取1,k最大取n,而且,很重要的一点是,i,j,k。。。是递增的,看到没有? 递增以为这什么呢?举个例子,1、2、3,...,n-1,n组成的一个序列

ghw_study的专栏 713

nyoj 163Phone List-字典树

题目大意:就是给一串电话号码,问是否存在这种情况,一个号码是另一个号码的前缀!!!   解题思路:字典树(tire树),是一种极大节省空间的树形结构,因为所有具有相同前缀的会共享前缀,我对tire数的理解是,结点本身是不存信息,存信息是当前结点的某个子节点是否为空!!! tire树的结构如下:   而tire树的核心代码归为两个函数,createTire()和findTire(),就像并

ghw_study的专栏 693

NYOJ 267郁闷的C小加(二)

题目大意:将一个中缀表达式转为后缀表达式,

ghw_study的专栏 681

nyoj 树状数组 522Interval 116士兵杀敌(二)

认真记录自己的成长,做人事,听天命。 今天认真学习了树状数组这中数据结构,很美的一种结构,下面简单介绍一下树状数组:具体的介绍百度百科很清楚。 我就说一下我对add(update),lowbit,getSum这三个函数的理解 我们知道树状数组是一种求数组连续和的神结构,究竟神在哪里? 1.树状数组求区间和的时间复杂度是logN 2.修改某个只时,同时也修改了区间和,时间复

ghw_study的专栏 663
上一篇: nyoj117 求逆序数 归并排序
下一篇: java中的Map、HashMap、HashTable
_低头的麦穗
博客等级 码龄12年 4粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值