[刷题之旅no8]P1165 日志分析

该博客讨论了一种利用二维数组来维护动态货物入库时的最大重量的方法。通过每次更新入库前的最大重量,确保在查询操作时能快速获取当前最大值。代码中展示了如何根据输入的操作类型(入栈、出栈、查询)进行相应的处理,从而实现所需功能。
摘要由CSDN通过智能技术生成

仔细思考之后,由于每次查询操作都只需要最大值,那么只要保证每次出库,我依旧可以找到最大值即可。
也就是说,设置一个二维数组,stack[i,0]代表当前入库的货物重量,stack[i,1]代表这个货物入库之前的货物重量最大值就好了啊!
思路:
读取操作数
如果0
读取重量
比较当前货物重量和最大重量
如果大于,记录入栈之前的最大重量,更新最大值,入栈
如果小于等于,那么记录入栈前的最大重量,入栈
如果1
判断是否top=0
等于0,空的,不操作,continue
不是0,更新最大值,出栈
如果2
直接输出max即可
代码:

#include<stdio.h>
int stack[200005][2]={0},top=0,oprate=0,weight=0,cur_max=0,n=0;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&oprate);
		if(oprate==0)//说明入栈操作
		{
			scanf("%d",&weight);
			top++;
			stack[top][0]=weight;
			stack[top][1]=cur_max;
			if(weight>cur_max)
			{
				cur_max=weight;
			}
		}
		else if(oprate==1)
		{
			if(top==0)
			{
				continue;
			}
			else
			{
				cur_max=stack[top][1];
				top--;
			}
		}
		else if(oprate==2)
		{
			printf("%d\n",cur_max);
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值