• pta编程题5 Pop Sequence


    第一次提交结果都是YES,后来检查发现Push,Pop函数写的有问题,即Stack sta改为引用Stack &sta,否则不能改变实参的值。

     1 #include <iostream>
     2 #include <vector>
     3 using namespace std;
     4 
     5 int M;// 栈最大容量
     6 struct Stack
     7 {
     8    int arr[1000];
     9    int top = -1;
    10 };
    11 
    12 void push(struct Stack &s, int i);
    13 void pop(struct Stack &s);
    14 bool isEmpty(struct Stack s);
    15 int top(struct Stack s);
    16 bool valid (vector<int> v);
    17 
    18 int main()
    19 {
    20     int n, k, i, j, t;
    21     cin >> M >> n >> k;
    22     int maxPop = 0;
    23     vector<int> v(n);
    24     for (i = 0; i < k; i++)
    25     {
    26         for (j = 0; j < n; j++)
    27             cin >> v[j];
    28         if (valid(v)) cout << "YES" << endl;
    29         else cout << "NO" << endl;
    30     }
    31     return 0;
    32 }
    33 
    34 void push(struct Stack &s, int i)
    35 {
    36     s.arr[++s.top] = i;
    37 }
    38 
    39 void pop(struct Stack &s)
    40 {
    41     s.top--;
    42 }
    43 
    44 bool isEmpty(struct Stack s)
    45 {
    46     return s.top == -1;
    47 }
    48 
    49 int top(struct Stack s)
    50 {
    51     return s.arr[s.top];
    52 }
    53 
    54 bool valid (vector<int> v)
    55 {
    56     struct Stack sta;
    57     int i, j, maxPop = 0;
    58     for (i = 0; i < v.size(); i++)
    59     {
    60         if (v[i] > maxPop)
    61         {
    62             for (j = maxPop + 1; j < v[i]; j++)
    63                 push(sta, j);
    64             if (sta.top + 2 > M) return false;
    65             maxPop = v[i];
    66         }
    67         else if (!isEmpty(sta) && v[i] == top(sta))
    68             pop(sta);
    69         else if (!isEmpty(sta) && v[i] < top(sta))
    70             return false;
    71     }
    72     return true;
    73 }
  • 相关阅读:
    winform文本打印
    自动升级程序
    构造使用IN子句的动态TransactSQL方法进行编号查询
    加解密
    Caffe源码Layer类
    Caffe源码SyncedMemory类
    Caffe源码Blob类
    CSS 溢出文本显示省略号的方法(兼容 IE、FF、Chrome)
    文字内容超出自动换到第二行显示
    js面向对象编程两个主要点
  • 原文地址:https://www.cnblogs.com/lxc1910/p/8678209.html
Copyright © 2020-2023  润新知