紧急求助
查看原帖
紧急求助
925109
Hongfr楼主2024/6/29 21:13

应该是手写栈错误吧

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <iomanip>
#include <vector>
#define intmax 0x7fffffff
using namespace std;
const int R=1e6*3+1;
int stack[R],size=0,n,arr[R],ans[R];
void push(int num)
{
    stack[++size]=num;
}
void pop()
{
    size--;
}
bool Empty()
{
    return size==0?true:false;
}
int top()
{
    return stack[size];
}
int main(int argc,char **argv)
{
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&arr[i]);
    for (int i=1;i<=n;i++)
    {
        if (!Empty() && arr[top()]<=arr[i])
            pop();
        ans[i]=Empty()?0:top();
        push(i);
    }
    for (int i=1;i<=n;i++)
        printf("%d ",ans[i]);
    return 0;
}
2024/6/29 21:13
加载中...