判断出栈序列是否合法Java

PTA(java)堆栈操作合法性 作者: DS课程组单位: 浙江大学时间限制: 400ms内存限制: 64MB代码长度限制: 16KB7-14 堆栈操作合法性(20 分)假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数... 阅读详情

【问题描述】
输入一个自然数N(2≤N≤9),要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。
 N=3时:
    1    2    3
    8    9    4
    7    6    5
【输入形式】
从标准输入读取一个整数N。
【输出形式】
向标准输出打印结果。输出符合要求的方阵,每个数字占5个字符宽度,向右对齐,在每一行末均输出一个回车符。
【输入样例】
4
【输出样例】
    1    2    3    4
   12   13   14    5
   11   16   15    6
   10    9    8    7

【评分标准】
本题不准使用数学库函数。结果正确得20分,每个测试点4分。、

大概思路是模拟数字进栈出栈的过程,gsd测试平台看不了测试用例,呜呜呜。

最后莫办法写注释的时候终于发现了那个错误。亲爱的同学们,请好好写注释。

import java.util.Scanner;
public class Judgeorder {
	private static final boolean I=true;
	private static final boolean O=false;
	
	static class Zhan {
	    int num; // 成员变量
	    boolean state; // 成员变量
	}
	static boolean check(int k,int n,Zhan[] ain) {
	    boolean result=O;//默认在外面
        for(int i=k+1;i<n;i++) {//  注意不要检查自己啊!!!
        	if(ain[i].state==I) {//后进的有一个在里面
        		result=I;
        		break;
        	}		   
       }
        return result;//检查结果能否出不来
    }
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();//进栈的数量
		int h=0;//要出栈的数字
		int k=0;//出栈数字的序号
		boolean can=true;//能按序列出来吗
		Zhan[] arrIN=new Zhan[n];//创建进栈序列
		int[] arrOUT= new int[n];//创建出栈序列
		for(int i=0;i<n;i++) {//初始化进站序列
			arrIN[i] = new Zhan();///////////
			arrIN[i].num=i+1;//该数字进栈时的排序
			arrIN[i].state=O;//都在外面,没入栈
		}
		for(int i=0;i<n;i++) {//初始化出栈序列
			arrOUT[i]=in.nextInt();
		}
		in.close();	//关闭读取
		for(int i=0;k<n;) {//遍历
			if(i<n-1) arrIN[i].state=I;//模拟进栈
			if(arrOUT[k]==arrIN[i].num) {//进栈和出栈数字相等
				h=arrIN[i].num;//h是要出栈的数字
				arrIN[arrOUT[k]-1].state=O;
        //出栈/继续出栈 状态置零 联系着arrIN[i].num=i+1一起看
				k++;
				if(i<n-1) {i++;}//继续进栈
				
				
			}else if(arrOUT[k]>arrIN[i].num){//出大于进(序列是从小到大进栈的)
				if(i<n-1) {i++;}//进栈 只进不出
				continue;
			}
			else{//出小于进 
				h=arrOUT[k];//
				if(check(h-1,n,arrIN)){//判断能否出去,若有一个在里面,不能出来
					can=false;//出不去
					break;//
				}else {
					arrIN[arrOUT[k]-1].state=O;//
					k++;//出去
					
				}
				
			}
			
		}
		if(can) {
			System.out.println("YES");
		}else {
			System.out.println("NO");
		}
	}
}

医学超声影像研究——从拒稿到录用:我的UMB投稿实战复盘 本文分享了作者将一篇关于超声影像中肿瘤传统分类方法的研究论文,从被其他期刊拒稿到最终被《Ultrasound in Medicine & Biology》录用的完整实战经验。文章详细复盘了心态调整、精准选刊、针对UMB期刊的稿件精修、投稿系统操作细节以及与审稿人有效沟通回复的全过程,为医学影像领域的科研工作者提供了宝贵的投稿策略与实操指南。 阅读详情

相关推荐

3D点云处理:PointNet++与PointTransformer的对比

摘要: 3D点云处理中,PointNet++和PointTransformer是两种主流深度学习模型。PointNet++通过分层采样和分组策略提取局部特征,而PointTransformer利用自注意力机制捕捉全局上下文。实验表明,PointTransformer在分类(ModelNet40准确率92.1%)和分割(ShapeNet mIoU 85.7%)任务上性能更优,但计算开销较大(训练时间180秒/轮)。PointNet++在实时性场景更具优势(训练时间120秒/轮)。未来可结合两者优势,或优化Tr

shejizuopin的博客 1117

18932 出栈序列合法性判定

每年期末考试必考题目。 一个栈的进栈序列是a、b、c、d、e,则可能的出栈序列是( )。 A.abecd B.decba C.dceab D.cabde 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列, 但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相

huang1xiao1sheng的博客 406

AD9361 Fast Lock实战:Python脚本自动生成Profile寄存器配置(附完整代码)

本文详细介绍了利用Python脚本实现AD9361 Fast Lock Profile寄存器自动化配置的实战方案。通过解析频率合成公式、VCO约束及查表机制,脚本能根据目标频率一键生成完整的16进制寄存器序列,大幅提升射频系统开发中多频点切换的效率和准确性,并支持CSV、JSON、C头文件等多种输出格式,便于与FPGA/嵌入式系统集成。

weixin_29194693的博客 475

C.基础数据结构--栈的应用(2)

第二行包含一个长度为n的数列,代表出栈序列。对于每组测试用例,第一行包含一个整数n

Cokie12345_的博客 1165

KEIL-MDK代码美化神器:AStyle配置全攻略(附常用参数详解)

本文详细介绍了如何在KEIL-MDK中配置和使用AStyle代码格式化工具,包括基础参数设置、高级格式控制、团队协作方案以及KEIL深度集成技巧。通过合理的AStyle配置,开发者可以显著提升代码风格一致性,优化团队协作效率,特别适合嵌入式开发项目。

weixin_30505225的博客 146

如何用DETR(detection transformer)训练自己的数据集

DETR(detection transformer)简介 DETR是Facebook AI的研究者提出的Transformer的视觉版本,是CNN和transformer的融合,实现了端到端的预测,主要用于目标检测和全景分割。 DETR的Github地址:link

weixin_50233398的博客 3万+

判断出栈顺序是否合法

判断出栈是否合法

m0_72410274的博客 494

上位机介绍:C# 开发者的必知基础

上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验);

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1558

java出栈序列合法性_判断出栈序列是否合法

【问题描述】对于一个栈,已知元素的进栈序列,判断一个由栈中所有元素组成的排列是否是可能的出栈序列。比如,进栈序列为1 2 3 4,则可能的出栈序列有4 3 2 1,1 4 3 2等。而1 4 2 3就不是。【输入形式】从标准输入读取第一行是一个整数N(3≤N≤10),代表有N个元素,其进栈序列是1 2 3 …… N。第二行是空格分隔的1~N的数字的一个排列。【输出形式】向标准输出打印结果。如果该排...

weixin_35050881的博客 861

R语言做一个 GM (1,1)灰色预测模型

累加生成是GM(1,1)模型的另一个重要步骤,它通过构造累加生成序列,把非线性非平稳时间序列转化为线性平稳时间序列。GM(1,1)是一种基于灰色系统理论的预测模型,通常用于中小样本的非线性、非平稳时间序列数据分析。灰色预测模型的核心是灰度处理,将原始时间序列转化为灰色时间序列。这里使用R语言中的diff函数对时间序列进行一次差分,然后对结果取累加和得到灰度序列。以上是GM(1,1)灰色预测模型在R语言中的实现步骤。需要注意的是,GM(1,1)模型适用于中小样本的时间序列预测,对于长期预测效果可能较差。

Mrrunsen的博客 3841

NVIDIA Isaac Sim 联合 VS Code 开发调试环境配置

在 Visual Studio Code (VS Code) 中打开 Isaac Sim 软件包主文件夹,即可打开该工作区。注意建议在学习教程和示例时使用 Visual Studio Code。另请参见有关 VS Code 工作区的详细信息,请参阅 Visual Studio Code (VS Code) 文档。

2506_90492529的博客 3103

给定入栈序列判断给定出栈序列是否合法(Exercise1_3_45,java)

package chapterone;import java.util.Scanner; import java.util.Stack;/*** * @author luodijack * * thinking: 用一个辅助栈,将入栈序列按照某种顺序入栈,看是否可以产生出栈序列即可。 * 1)如果当前栈为空,且入栈序列不空,则入栈序列的下一个元素入栈; *

老黑牛 2322

Authentication Assertion Tickets,SAP 系统到系统单点登录里的短命凭证

SAP 系统间的身份传递机制存在 Authentication Assertion Ticket 和 SAP Logon Ticket 两种易混淆的凭证。前者用于系统间短时身份委托(有效期2分钟,通过HTTP头传输),后者用于浏览器SSO(可配置有效期,通过Cookie传输)。Assertion Ticket依赖签发系统的数字签名和严格的时间同步,适用于ABAP/Java系统间的后台作业调用。现代SAP架构已转向OAuth 2.0等标准协议,但老系统中仍需注意两种票据的关键差异:传输方式、有效期、接收方限制

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 602

判断一个序列是否是另外一个序列的出栈序列(java实现)

判断一个序列是否是另外一个序列的出栈序列 在各种刷题网站上刷题时,如果刷的是单选题的话,常常会遇到这样一个问题: 如果进栈序列为1,2,3,4,则可能的出栈序列是() 注:一个元素进栈后可以马上出栈,不用等全部进栈 正确答案: B C A.3,1,4,2 B.2,4,3,1 C.2,3,4,1 D.任意顺序都有可能 如果单纯的做选择题的话,是挺简单的,一个选项一个选项的对比,观察是否能够通过进栈序...

weixin_43260413的博客 362

Camera2Demo

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java实现检验一串数字的出栈合法性

题目描述: 解题思路: 判断出栈合法性的关键在于,对于每一个数,在它后面出栈且比它小的数,必是以降序排列的。 比如说3 4 2 1 5这一组数,对于第一个数 3 来说,后面比它小的数有 1、2,而在4 2 1 5这段子序列中,1、2是以降序 2 1排列的,所以3 2 1这个出栈顺序是合法的; 对于第二个数 4 来说,后面比它小的数有 1、2,在 2 1 5 这段子序列中,...

weixin_30538029的博客 179

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

栈结构中判断出栈序列是否正确(java实现)

判断栈结构中判断出栈序列是否正确(java实现)

m0_73892800的博客 328

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

栈练习之Example006-判定给定的由 I 和 O 组成的入栈和出栈组成的操作序列是否合法

假设以 I 和 O 分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅有 I 和 O 组成的序列,可以操作的序列为合法序列,否则称为非法序列。如 `IOIIOIOO`、`IIIOOIOO` 是合法的;而 `IOOIOIIO`、`IIIOIOIO` 不合法。写出一个算法,判定给定的操作序列是否合法。若合法则返回 1,否则返回 0(假定被判定的操作序列已存入一维数组 char 型数组 `ch[]` 中,操作序列以 "\0" 为结束符)。

二木成林 6376

剑指offer 22---判断元素出栈、 入栈顺序的合法性

题目: 判断元素出栈、 入栈顺序的合法性。 如: 入栈的序列( 1,2,3,4,5) , 出栈序列为( 4,5,3,2,1) 是合法序列, 入栈的序列( 1,2,3,4,5) , 出栈序列为( 1,5,3,2,4) 是不合法序列。 代码实现如下: #include #include #include #include using namespace std; //判断

景初浅行 978

Java~栈的相关试题①求栈的所有出栈可能 ②判断一个出栈序列是否正确

蜂信物联FastBee平台https://gitee.com/beecue/fastbee阿里资料开源项目https://gitee.com/vip204888百度低代码前端框架https://gitee.com/baidu/amisOpenHarmony开源项目https://gitcode.com/openharmony仓颉编程语言开放项目https://gitcode.com/Cangjiei < count;i++) {

2401_86352702的博客 740

每日一题: 合法括号序列判断

一、问题描述 对于一个字符串,设计一个算法,判断其是否为一个·合法的括号串,给定字符串 A 和他的长度 n,请返回一个 boolean 值代表他是否是一个合法的括号串。 一个合法的括号串定义为:1.只包括字符;2.左括号和右括号一一对应。 二、思路分析 1、首先,需要一个 map 来存放键值对,存一对合法括号; 2、用一个栈来存放左括号; 3、循环判断字符串中的字符; 4、当字符为左括号,就入栈; 5、当字符为右括号是,就通过 map 取获取相应的 value 值,与栈顶元素进行比较,并将栈顶元素出栈; a

weixin_45970688的博客 850

Java数据结构与算法------如何根据入栈序列判断可能的出栈序列

1 问题 输入两个整数序列,其中一个序列表示站的push(入栈)顺序,判读另一个序列有没有可能是对应的pop(出站)顺序。 2 思路分析 1) 把push序列依次入栈,直到栈顶元素等于pop序列的第一个元素,然后栈顶元素出站,pop序列的移动到第二个元素。 2)在1)后,如果栈顶元素还等于pop序列现在的元素,则继续执行第一步里面的不走,出栈同时pop后移;否则push序列继续 入栈,同时和pop序列继续和比较。 3) 当pus...

weixin_45519487的博客 671

给定进栈顺序,判断一个序列是否为正确的出栈顺序

数据结构、栈

tgg53953的博客 428

判断某一数列能否通过另一数列进行栈操作实现(数列按指定顺序入栈,判断其出栈是否合法?)

GDUF 数据结构第七周第二题: 数列按指定顺序入栈,判断其出栈是否合法? 即:在 [1. 2, 3, 4, 5]的入栈顺序下,检验 [4 ,3, 2, 1, 5] 是否为合法的出栈序列 java实现: package week7_2; public class two { public static void main(String[] args) { //数列按指定顺序入栈,判断其出栈是否合法 //思路:1.将指定顺序放入order数组,出栈序列放入t

weixin_53484589的博客 197

火车进站_牛客网

给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。 输入描述: 有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9。 输出描述: 输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见samp...

ty6693的博客 1690

验证栈序列的例题与代码

我们可以按以下顺序执行:push(1) , push(2) , push(3) , push(4) , pop() -> 4 , push(5) , pop() -> 5 , pop() -> 3, pop() -> 2 , pop() -> 1。否则,返回 false。只要模拟入栈和出栈的过程,将一个数进行入栈操作的时候检查该数是否为下一个要出栈的数,如果是就弹出该数,并继续检查栈中的数。如果能扫描完所有要出栈的数,就是一个合法的栈序列。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!

Buy0515的博客 217

数据结构实验之栈七:出栈序列判定

数据结构实验之栈七:出栈序列判定 Time Limit: 30MS Memory Limit: 1000KB Submit Statistic Discuss Problem Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次。输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列。 例如

Bay_min的博客 385
上一篇: opengl二维贴图时,图片变色
下一篇: 分治算法——平面点问题(使用数组实现)
fqq3
博客等级 码龄4年 114粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值