前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HDU 1022(关于栈的详细解法)

HDU 1022(关于栈的详细解法)

作者头像
杨鹏伟
发布2020-09-11 08:00:42
2890
发布2020-09-11 08:00:42
举报
文章被收录于专栏:ypw

题意:就是火车进站问题,实际就是栈的模板

思路:那么我们用栈来解决这个问题,无非是入栈,出栈。那么我们先压入出栈序列的第一个元素,然后我们就需要要进行判断了。如果栈中元素等于预想出栈序列的头元素,那么就弹出栈中当前元素,(这个还需要记录出栈还是入栈,因为最后要打印,所以我们首先开一个布尔数组1代表入栈,0代表出栈),记录出栈,不相等那么就继续从入栈序列中继续压入元素,记录入栈。 后面的就是控制输出跟清栈了。

代码语言:javascript
复制
#include<bits/stdc++.h>

using namespace std;

stack<char> st;

bool flag[105];//1表示进 , 0表示出 

int main(){
	int n;
	int i,j;
    string s1,s2;
	while(cin>>n>>s1>>s2){
		int k = 0;
		i=0,j=0;
		st.push(s1[0]);
		flag[k++] = 1;
		
		while(i<n && j<n){
			if(!st.empty() && st.top() == s2[j]){
				j++;
				st.pop();
				flag[k++] = 0;
			}
		    else{
		
		    	st.push(s1[++i]);
		    	flag[k++] = 1;
			}
		}
		if(j!=n)  cout<<"No."<<endl;
		else{
			cout<<"Yes."<<endl;
            for(i=0;i<k;i++)
            if(flag[i])  cout<<"in"<<endl;
            else  cout<<"out"<<endl;
        }
        cout<<"FINISH"<<endl;
		}
	while(!st.empty()){
		st.pop();
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档