洛谷 P1165 日志分析

本文介绍了一种使用C++中的栈数据结构解决题目,程序在遍历输入序列时,统计最大非零值。当遇到0时,处理特殊情况,最后输出栈顶元素作为结果。
摘要由CSDN通过智能技术生成

 这道题我们可用栈来做,如果有建议请私聊或评论,代码如下:

#include<bits/stdc++.h>//万能头文件 
using namespace std;//好习惯 
stack <int> st;//这是一个统计最大值的栈 
int main()
{
    int n,x,y;//三个函数 
    cin >> n;//输入有多少行 
    st.push(0);//开始先将0放进去,这样就不用考虑是否为0的事了 
	for(int i=1;i<=n;i++)
       {
       	  cin >> x;//输入第一个数 
       	  if(x==0)//如果那个数为0 
			 {
			 	cin >> y;//输入第二个数 
			 	if(y>st.top()) st.push(y);//如果这个数大于目前的最大值,将y赋给最大值 
			 	else st.push(st.top());//如果没有,就将原来的插入进去
			 } 
		  if(x==1)   st.pop();//如果x=1,把栈顶弹出 
		  if(x==2)   cout  << st.top() << endl ;//如果x=2,那么输出 
	   }
	return 0;//华丽的结尾 
}

希望有大佬指点指点,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值