讨论/题目交流/求助,为什么执行代码结果正确,提交发生RTE(除0)?/
求助,为什么执行代码结果正确,提交发生RTE(除0)?

未使用全局变量,所有变量均在赋值后使用
题目:https://leetcode-cn.com/problems/Maximum-Product-Subarray/submissions/
代码:https://paste.ubuntu.com/p/64RTPpvqCk/
t1.png
t2.png

查看报错可知大概是 46 行报错:

           maxi=max(mul[i]/minp[i-1],mul[i]);  //正累积/最小前缀正累积

可以看到唯一会使这行报错的是 minp 这个变量,可以去找相关变量初始化的地方

进而可发现: 33 ~ 39 行这块代码有点问题

           minn[i]=minn[i-1];  
           if (minp[i-1]<0)
               minp[i-1]=mul[i];
           else if (mul[i]<minp[i-1])
               minp[i]=mul[i]; 
           else
               minp[i]=minp[i-1];

可以看到第一个 if 中 仅更新了 minp[i-1] ,没有更新 minp[i] ,导致 minp[i] 未进行初始化

C++ 中,栈中的局部变量不会初始化而拥有不可预测的值

所以你所说的第二个条件不成立