蒟蒻过不了样例求助,实在不明白为啥会这样
查看原帖
蒟蒻过不了样例求助,实在不明白为啥会这样
950927
_luo_gu楼主2023/8/23 15:36

代码:```cpp #include <bits/stdc++.h> using namespace std ; int n , ans[1100000] , sta[1100000] , a[1100000] , top ; int main(){ scanf("%d" , &n ); for( int i = 1 ; i <= n ; i ++ ){ cin >> a[i] ; } //按下标倒序将数据放到降序栈里面 top = 0 ; //问题似乎是top的初始值导致了非法访问,但是改成1依旧不影响继续出问题 int cnt = 0 ; a[0] = 1e6+1 ; //本来是想让栈的零号位是极大值的,但是打错了.后来改成栈的极大值的时候就输出了一串零 for( int i = n ; i >= 1 ; i -- ){ while( a[i] >= sta[top] ){//如果栈中最后一个值不配被ai瞻仰,就把他弹出 top -- ; } ans[i] = sta[top-1] ; if( top == 0 ){ //如果这个牛最高或者这个牛是栈中最高的牛 ans[i] = 0 ; } top ++ ; sta[top] = a[i] ; } //输出 for(int i = 1 ; i <=n ; i ++ ){ cout << ans[i]<<endl; } return 0 ; }


样例的前两个数也许非法访问了,输出的随机数,后面的几个数都是对的,

感谢大佬,好人一生平安!
2023/8/23 15:36
加载中...