您当前的位置: 首页 > 

minato_yukina

暂无认证

  • 3浏览

    0关注

    138博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

洛谷P4387 验证栈序列

minato_yukina 发布时间:2020-11-17 22:13:21 ,浏览量:3

题目大意: 给出一个入栈序列,再给一个序列,要你判断这个序列是不是这个入栈序列的出栈序列..

什么是入栈序列,大概就是能通过入栈出栈一系列骚操作得到的一个序列。

以1 2  3 4 5为例子吧

第一次也没什么骚操作了,只能入栈了是吧^_^.  

然后第二次可以把二入栈(做法2),也可以把它直接出栈(做法1)(先入栈然后马上出栈)

我们选择将2直接出栈 此时总结下状态 栈内有1,栈外有2 待处理的数字就有3、4、5这两个。处理3、4、5时也是类似的,不过这时候如果栈内不为空(这时候有1),就可以考虑把1也出栈。

让我们快进一下.. 考虑这种情况

这种情况下 序列 2 3 4 1 5和 2 3 4 5 1 都是正确的出栈序列。

 

接下来是代码实现了 我们开一个数组a存入栈序列,再开一个数组b存验证序列,开一个栈实现模拟这个过程。

下面给出核心代码。 t是指向数组b当前要检查的数字。

for(j=1;jq;stack p; 
for(i=1;i>n;t=1; memset(a,0,sizeof(a));memset(b,0,sizeof(b));
for(j=1;j>a[j];
}
for(j=1;j>b[j];   	
}
for(j=1;j            
关注
打赏
1663570241
查看更多评论
0.0344s