社区讨论

求助帖,关于栈的一道题(违规紫衫)

灌水区参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lypjcz1k
此快照首次捕获于
2024/07/17 15:43
2 年前
此快照最后确认于
2024/07/17 15:57
2 年前
查看原帖

题目描述

请你实现一个栈(stack),支持如下操作:
  • push(x):向栈中加入一个数 xx
  • pop():将栈顶弹出。如果此时栈为空则不进行弹出操作,输出 Empty
  • query():输出栈顶元素,如果此时栈为空则输出 Anguei!
  • size():输出此时栈内元素个数。

输入格式

本题单测试点内有多组数据
输入第一行是一个整数 TT,表示数据组数。对于每组数据,格式如下:
每组数据第一行是一个整数,表示操作的次数 nn
接下来 nn 行,每行首先由一个字符串,为 pushpopquerysize 之一。若为 push,则其后有一个整数 xx,表示要被加入的数,xx 和字符串之间用空格隔开;若不是 push,则本行没有其它内容。

输出格式

对于每组数据,按照「题目描述」中的要求依次输出。每次输出占一行。

样例 #1

样例输入 #1

CPP
2
5
push 2
query
size
pop
query
3
pop
query
size

样例输出 #1

CPP
2
1
Anguei!
Empty
Anguei!
0

提示

样例 1 解释

对于第二组数据,始终为空,所以 popquery 均需要输出对应字符串。栈的 size 为 0。

数据规模与约定

对于全部的测试点,保证 1T,n1061 \leq T, n\leq 10^6,且单个测试点内的 nn 之和不超过 10610^6,即 n106\sum n \leq 10^6。保证 0x<2640 \leq x \lt 2^{64}

提示

  • 请注意大量数据读入对程序效率造成的影响。
  • 因为一开始数据造错了,请注意输出的 Empty 不含叹号,Anguei! 含有叹号。

这道题我写了个用STL的栈,但是找了半天bug一直没有,由于这道题在主题库应该是没有,所以我把整个题目ctrl+cv了。如果有做错什么大佬们可以随意说我,我会细心去听的
这是我的代码,而且33分。。。,三个点,只对了第一个点,是WA不是其他测试点
CPP
#include<bits/stdc++.h>
using namespace std;
int main(){
    long long T;
    cin >> T;
    for (int i = 1;i <= T;i++){
        int n;
        cin >> n;
        stack<long long>st;
        for (int j = 1;j <= n;j++){
            string s;
            cin >> s;
            if (s == "push"){
                long long res;
                cin >> res;
                st.push(res);
            }
            else if (s == "query"){
                if (st.empty() != true){
                    cout << st.top() << endl;
                }
                else {
                    cout << "Anguei!" << endl;
                }
            }
            else if (s == "size"){
                cout << st.size() << endl;
            }
            else if (s == "pop"){
                if (st.empty() != true){
                    st.pop();
                }
                else {
                    cout << "Empty"<< endl;
                }
            }
        }
    }
    return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...