C++ 未获得预期的输出…代码意外终止(hackerank堆栈问题)
我正在与这个代码斗争。程序意外终止。请帮忙 问题链接: 10 1 97 2. 1 20 2. 1 26 1 20 2. 3. 1 91 如果我们在我们的程序中输入上述数字…它不会到达终点,而是中途停止执行 请帮我找到这个问题。。。动态分配或任何功能中是否存在问题…如果您有时间,请访问问题链接并提供帮助..谢谢C++ 未获得预期的输出…代码意外终止(hackerank堆栈问题),c++,c++11,dynamic,output,terminate,C++,C++11,Dynamic,Output,Terminate,我正在与这个代码斗争。程序意外终止。请帮忙 问题链接: 10 1 97 2. 1 20 2. 1 26 1 20 2. 3. 1 91 如果我们在我们的程序中输入上述数字…它不会到达终点,而是中途停止执行 请帮我找到这个问题。。。动态分配或任何功能中是否存在问题…如果您有时间,请访问问题链接并提供帮助..谢谢 class stack { public: int top = -1; int *s; }; void create(stack *st,int n) {
class stack
{
public:
int top = -1;
int *s;
};
void create(stack *st,int n)
{
st->s = new int[n];
}
void del(stack *st)
{
st->top--;
}
void push(stack *st,int x)
{
st->top++;
st->s[st->top] = x;
}
int main()
{
long int t;
stack st;
int choice;
int number;
int max =-1;
cin>>t;
create(&st,t);
while(t--)
{
cin>>choice;
if(choice == 1)
{
cin>>number;
push(&st,number);
if(max < number)
max = number;
}
else if(choice == 2)
{
del(&st);
}
else
{
return max;
}
}
return 0;
}
<>你可以在使用C++容器和算法的情况下,在更短和干净的代码中解决上述问题。 是一些自解释的代码:
include的复杂度较低,无需快速I/O即可工作。请检查更好的O1时间复杂度实现。请重新阅读说明,并检查您在3上的操作。我真的很支持这一点……事实上,这是我在这里的第一个问题……这就是为什么我们永远不要低估调试器的功能。这很酷,但是请远离所有的盖子。可能是因为案例3中的返回最大值。您应该打印值,而不是返回值。我赞成良好的编码风格和stl方法的使用,它从技术上解决了OP的问题:D尽管我怀疑这迟早会导致TLE,因为案例3具有线性时间复杂性。