codechef上出现Nzec错误,尽管返回0

codechef上出现Nzec错误,尽管返回0,c,C,我已经为codechef问题编写了以下代码。每次提交时,我都会收到一个NZEC错误。有什么想法吗 #include<stdio.h> int main() { int n=0,s=0; int a[2001][2001]={0},i=0,k=0,c=0; scanf("%d%d",&n,&s); for(i=0;i<s;i++)

我已经为codechef问题编写了以下代码。每次提交时,我都会收到一个NZEC错误。有什么想法吗

       #include<stdio.h>
       int main()
       {

           int n=0,s=0;
           int a[2001][2001]={0},i=0,k=0,c=0;
           scanf("%d%d",&n,&s);
           for(i=0;i<s;i++)
           {
                scanf("%d",&c);
                for(k=0;k<c;k++)
                {
                    scanf("%d",&a[i][k]);
                }
           }
           printf("%d\n",s);
           for(i=0;i<s;i++)
                printf("%d\n",i); 
           return 0;
        }
int a[2001][2001]对于堆栈太大,请将其声明为全局变量

int a[2001][2001]={0};
int main()
{
    int n=0,s=0;
    int i=0,k=0,c=0;
    scanf("%d%d",&n,&s);
    /* etc. */
}
int a[2001][2001]对于堆栈太大,请将其声明为全局变量

int a[2001][2001]={0};
int main()
{
    int n=0,s=0;
    int i=0,k=0,c=0;
    scanf("%d%d",&n,&s);
    /* etc. */
}

您的数组是在堆栈中创建的,它可能太小了

实际上,在多线程应用程序中,每个线程都有自己的堆栈。但是,所有不同的线程将共享堆

因此,在int main函数中,当定义数组时,实际上是在堆栈中创建数组,它是主线程。如果您将其移出函数并全局定义,它将在堆中创建。这比我刚才描述的要复杂一些,例如,如果您在函数中使用new关键字创建对象,它将在堆中创建,等等。但我现在不解释这一点

可以使用ulimit-s检查堆栈大小


还要注意,由于内存分配方式的原因,堆栈通常比堆快。

您的数组是在堆栈中创建的,这可能对它来说太小了

实际上,在多线程应用程序中,每个线程都有自己的堆栈。但是,所有不同的线程将共享堆

因此,在int main函数中,当定义数组时,实际上是在堆栈中创建数组,它是主线程。如果您将其移出函数并全局定义,它将在堆中创建。这比我刚才描述的要复杂一些,例如,如果您在函数中使用new关键字创建对象,它将在堆中创建,等等。但我现在不解释这一点

可以使用ulimit-s检查堆栈大小


还请注意,由于内存分配方式的原因,堆栈通常比堆快。

是问题所在。问题通常出现在问题本身,而不仅仅是它的链接,最好是摘要形式。您还应该说明NZEC错误是什么。是问题。问题通常应该出现在问题本身,而不仅仅是它的链接,最好是以摘要的形式出现。您还应该说明NZEC错误是什么。谢谢。本地数组大小的上限是多少?我不明白为什么全局变量会更大..堆栈大小可以通过键入:ulimit-s来获得和修改。但是,堆的大小要大得多,使这个变量全局移动到堆中。@user1614476本地数组存储在系统堆栈中,全局数组存储在系统堆中。系统堆栈的大小由实现指定,但通常小于系统堆。@或者在联机测试中无法获取和修改堆栈大小。@user1614476:您应该将答案标记为正确,因为它正确回答了您的问题。谢谢。本地数组大小的上限是多少?我不明白为什么全局变量会更大..堆栈大小可以通过键入:ulimit-s来获得和修改。但是,堆的大小要大得多,使这个变量全局移动到堆中。@user1614476本地数组存储在系统堆栈中,全局数组存储在系统堆中。系统堆栈的大小由实现指定,但通常小于系统堆。@或者在联机测试中无法获取和修改堆栈大小。@user1614476:您应该将答案标记为正确,因为它正确回答了您的问题。