文章

39

粉丝

74

获赞

1

访问

18.3k

头像
One Way In, Two Ways Out 题解:类比之前的one way in,one way out
P990 浙江大学2021年机试题
发布于2024年3月18日 14:45
阅读数 302

#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{
                ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发