HDU - 1022 Train Problem I STL 压栈

火车调度算法解析
本文介绍了一个火车调度问题,探讨了如何使用数组模拟栈来验证一组火车能否按照特定顺序离开车站。通过具体的输入输出示例,文章详细展示了算法的实现过程。

Train Problem I

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 41471    Accepted Submission(s): 15510


Problem Description
As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^). But here comes a problem, there is only one railway where all the trains stop. So all the trains come in from one side and get out from the other side. For this problem, if train A gets into the railway first, and then train B gets into the railway before train A leaves, train A can't leave until train B leaves. The pictures below figure out the problem. Now the problem for you is, there are at most 9 trains in the station, all the trains has an ID(numbered from 1 to n), the trains get into the railway in an order O1, your task is to determine whether the trains can get out in an order O2.
 

Input
The input contains several test cases. Each test case consists of an integer, the number of trains, and two strings, the order of the trains come in:O1, and the order of the trains leave:O2. The input is terminated by the end of file. More details in the Sample Input.
 

Output
The output contains a string "No." if you can't exchange O2 to O1, or you should output a line contains "Yes.", and then output your way in exchanging the order(you should output "in" for a train getting into the railway, and "out" for a train getting out of the railway). Print a line contains "FINISH" after each test case. More details in the Sample Output.
 

Sample Input
3 123 321 3 123 312
 

Sample Output
Yes. in in in out out out FINISH No. FINISH

通过火车进站前的顺序判断是否能改变为所给的顺序,火车需先进站然后再出站,可用STL中的stack实现,这里用数组模拟压栈

#include<stdio.h>
#include<string.h>
int main()
{
	int n;
	char s1[20]={0},s2[20]={0},s3[20];
	int s1_in[20],s2_in[20];
	while(~scanf("%d %s %s",&n,s1,s2))	
	{
		memset(s3,0,sizeof(s3));//需对数组进行清空
		
		int s[20]={0};
		int i1=0,i2=0,i3=0,i=0;
		//scanf("%s" "%s",s1,s2);
		for(i1=0;i1<n;i1++)//将字符转换为数字
		{
			s1_in[20]=s1[i]-'0';
			s2_in[20]=s2[i]-'0';
			
		}
		for(i1=0;i1<n;i1++)
		{
			s3[i3]=s1[i1];//火车进站
			i3++;
			i++;
			while(s3[i3-1]==s2[i2]&&i2<n)
			{
				i3--;
				s[i]=1;
				i2++;
				i++;
			}
		}
		//printf("%d %d %d %d\n",i1,i2,i3,i);
		if(i2==n)//火车全部出站
		{
			printf("Yes.\n");
			for(i1=0;i1<i;i1++)
			{
				if(s[i1]==1)
				{
					printf("out\n");
				}
				else
				printf("in\n");
			}
			printf("FINISH\n");
		}
		else
		{
			printf("No.\n");
			printf("FINISH\n");
		}
	}
	return 0;
} 



内容概要:本文介绍了一种基于倒谱预白化技术的轴承故障检测方法,特别适用于变速工况下复杂背景噪声中的故障特征提取。通过带通滤波预处理信号后,采用倒谱预白化消除谐波干扰,再对信号进行平方包络谱分析,从而有效增强故障冲击特征,实现对轴承早期故障的精准诊断。文中提供了完整的Matlab代码实现,便于读者复现算法并应用于实际工程案例。该方法克服了传统包络谱分析在强噪声和变速条件下敏感度下降的问题,提升了故障识别的鲁棒性和准确性。; 适合人群:具备一定信号处理基础,从事机械故障诊断、状态监测及相关【轴承故障检测】【借助倒谱预白化技术在变速条件下诊断轴承故障的应用】带通滤波后的倒谱预白化的平方包络谱用于轴承故障检测(Matlab代码实现)领域研究的科研人员或工程师,尤其适合研究生及企业研发技术人员; 使用场景及目标:①应用于旋转机械(如电机、风机、齿轮箱)的轴承故障检测;②解决变速运行条件下因频率调制导致的传统诊断方法失效问题;③提升在强噪声环境中微弱故障特征的提取能力; 阅读建议:建议结合Matlab代码逐步调试理解每一步信号处理流程,重点关注倒谱预白化与平方包络谱的联合应用机制,并尝试将其迁移至其他类似故障诊断场景中验证效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值