zoukankan      html  css  js  c++  java
  • Pop Sequence

    问题描述:给定一个栈,最多可存放M个元素,现要将N个数(1-N),随机入栈、出栈,入栈顺序由小到大,判断一个给定的序列是否合法。

    思路:要依次判断序列中的每一个数,判定为不合法的情况有:

    1. 当前栈顶元素比该数大。因为目前处理的数还未出栈,并且一定比栈顶元素先入栈,而栈顶元素还未出栈,则该数不可能出栈成功。
    2. 在该数之前的数及该数入栈过程中栈溢出。

    上述两种情况发生时直接判断不合法,其他情况:

    1. 若栈顶元素等于该数,直接出栈,继续循环。
    2. 在该数之前的数及该数入栈,该数出栈,继续循环。

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void Judge(int M, int N);
    
    int main() {
        int M, N, K;
        if(scanf("%d %d %d",&M,&N,&K)==3){}
        for (int i = 0;i < K;i++)
            Judge(M, N);
        return 0;
    }
    
    void Judge(int M, int N) {
        int* stack = (int*)malloc(sizeof(int) * (M+1));//用数组模拟一个栈
        int top = 0;
        int* flag = (int*)malloc(sizeof(int) * (N+1));
        int* number = (int*)malloc(sizeof(int) * (N + 1));
        memset(flag, 0, sizeof(int) * (N + 1));
        int i, j, k;
        for (i = 1;i <= N;i++) {
            if(scanf("%d",&number[i])==1){}
        }
        for (i = 1;i <= N;i++) {
            if (stack[top] > number[i]) {
                printf("NO\n");
                return;
            }
            if (stack[top] == number[i]) {
                flag[number[i]] = 2;
                top--;
                continue;
            }
            for (k = 1;k < number[i];k++) {
                if (flag[k] == 0) {
                    top++;
                    if (top > M) {
                        printf("NO\n");
                        return;
                    }
                    flag[k] = 1;
                    stack[top] = k;
                }
            }
            if (top + 1 > M) {
                printf("NO\n");
                return;
            }
            flag[number[i]] = 2;
        }
        printf("YES\n");
        free(stack);
        return;
    }
  • 相关阅读:
    LeetCode: 18. 4Sum
    LeetCode:15. 3Sum
    Leetcode:1. Two Sum
    tensorflow placeholder
    Tensorflow变量
    13.git的简单使用
    13.Django1.11.6文档
    12.python进程协程异步IO
    12.Flask-Restful
    12.Django思维导图
  • 原文地址:https://www.cnblogs.com/yaotong0830/p/14253837.html
Copyright © 2011-2022 走看看