gpt4 book ai didi

c - 对于较大的 n 值(大于 500000),获取 SIGSEGV

转载 作者:行者123 更新时间:2023-11-30 15:56:30 25 4
gpt4 key购买 nike

#include<stdio.h>
int l;
int check(int m[][l],int a,int r,int c,int e)
{
int t,i,j;
for(i=0;i<c;i++)
{
if(m[a][i]==e)
return 1;
}
for(i=0;i<c;i++)
{
for(j=0;j<r;j++)
{
if(a!=j)
{
if(m[a][i]==m[j][i]&&m[a][i]!=-1)
{
m[a][i]=-1;
return check(m,j,r,c,e);
}
}
}
}
return 0;
}
int main()
{
int t;
int i,j;
scanf("%d",&t);
for(t;t>0;t--)
{
l=0;
int n,e,a,b,x,y;
scanf("%d%d%d%d",&n,&e,&a,&b);
int m[e][n];
l=n;
for(i=0;i<e;i++)
{
for(j=0;j<n;j++)
{
m[i][j]=-1;
}
}
for(i=0;i<e;i++)
{
scanf("%d%d",&x,&y);
for(j=0;j<((n-y)/x)+1;j++)
{
m[i][y+(j*x)]=y+(j*x);
}
}
int v,g=0;
for(i=0;i<e;i++)
{
for(j=0;j<n;j++)
{
if(m[i][j]==a)
{
v=check(m,i,e,n,b);
g++;
break;
}
}
}
if(v==1)
{
printf("It is possible to move the furniture.\n");
}
else if(v==0||g==0)
printf("The furniture cannot be moved.\n");
}
return 0;
}

"I'm getting the correct answer for value of n<=50000, when i give more values i'm getting runtime error" "i have written a code for "http://www.spoj.pl/problems/SCRAPER/".. when i run it in ideone, i got the answers as "runtime error" for more 'n' values

最佳答案

您尝试分配的内存多于堆栈上的可用内存,这会导致堆栈溢出。通常,使用 malloccallocrealloc 动态分配这样的大数组要好得多。

检查这个问题:C: Array initialization segfaults depending on size and call to printf()

关于c - 对于较大的 n 值(大于 500000),获取 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11240111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com