codechef上出现Nzec错误,尽管返回0
我已经为codechef问题编写了以下代码。每次提交时,我都会收到一个NZEC错误。有什么想法吗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++)
#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:您应该将答案标记为正确,因为它正确回答了您的问题。