文章
39
粉丝
74
获赞
1
访问
18.3k
#include <stdio.h>
#include <stdlib.h>
int n,k;
int stack[100000];
int tmp[10000];
int out[10000];
int top;
int head;
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)scanf("%d",&tmp[i]);
while(k--){
for(int i=0;i<n;i++)scanf("%d",&out[i]);
for(int i=0;i<n;i++)stack[i]=0x3f3f3f3f;//表示没有值
int top=0;
int head=0;
int j=0;//出栈序列
for(int i=0;i<n;i++){//逐个入栈并检查
stack[top++]=tmp[i];
while((stack[top-1]!=0x3f3f3f3f&&stack[top-1]==out[j]&&top>0)||(stack[head]!=0x3f3f3f3f&&stack[head]==out[j]&&head>=0))
{
if(stack[top-1]!=0x3f3f3f3f&&stack[top-1]==out[j]){
//printf("right:%d out top:%d\n",stack[top-1],top);
stack[top-1]=0x3f3f3f3f;
j++;
top--;
}else{
...
登录后发布评论
暂无评论,来抢沙发