力扣编译器如何处理二维double数组的

问题遇到的现象和发生背景

题目背景
?%ra=linkhttps://leetcode.cn/problems/soup-servings/description/

请问以下两者有什么区别

vectordouble>> dp(n + 1, vector<double>(n + 1));//法1
double dp[n+5][n+5];//法2

洛谷808题中,用法1创建的数组即可AC,但是我用C++语言写法二的数组时无法AC,仅通过30/41个样例
同时用C语言写法二却能通过,所以我在想是否与力扣的编译器有关
后续我尝试了一下,发现C++法2有概率通过,但是与力扣有关,很奇怪

用代码块功能插入代码,请勿粘贴截图
class Solution {
public:
    double soupServings(int n) {
        double res=0.0;
        if(n>4475)
            return 1.0;
        int m=ceil((double)n/25);
        double dp[m+5][m+5];//替换成下一行就通过了
        // vector> dp(n + 1, vector(n + 1));
        dp[0][0]=0.5;
        for(int i=1;i<=m;i++)
            dp[0][i]=1;

        for(int i=1;i<=m;i++)
            for(int j=1;j<=m;j++)
            {
                dp[i][j] = (dp[max(0, i - 4)][j] + dp[max(0, i - 3)][max(0, j - 1)] +
                           dp[max(0, i - 2)][max(0, j - 2)] + dp[max(0, i - 1)][max(0, j - 3)]) / 4.0;
            }
        return dp[m][m];
    }
};

第一次提交错误的样例是30号样例n =101,输出为0.86719
第二次提交错误的样例是33号样例n=475,输出为0.92450

img

加了个memset(a,0,sizeof(a));过了,因为double dp[n+5][n+5]不会初始化为0,而vector会初始化,所以看运气过样例