gpt4 book ai didi

c - 以下代码中运行时错误(其他)的原因是什么

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:42 25 4
gpt4 key购买 nike

我正在尝试解决在线法官的问题(http://www.codechef.com/BTCD2012/problems/DOORS)。以下是问题的代码。当我提交时,判断会给出运行时错误(其他)。我是否使用了太多内存,如果是这样,请帮助我寻找其他方法,因为内存已根据给定的约束使用.

约束条件如下:

0< t1 <1000000;

0<数<100000000;

#include<stdio.h>
int a[100000001];
int main()
{

int t=3,j,k1,g,k=1,m,n=0,i,t1,num;
for(i=1;i<10000;i++)
{
m=i*i;
n=n+t;
for(j=m;j<=n;j++)
{
a[j]=k;
}
k++;
t=t+2;
// printf("a[%d]--> %d\n",n,a[n]);
}

scanf("%d",&t1);

for(k1=0;k1<t1;k1++)
{
scanf("%d",&num);
printf("%d\n",a[num]);
}
getch();
// return 0;
}

最佳答案

int a[100000001];

这一行就是问题所在,它在静态分配区分配了太多内存!正如建议的那样,您可以使用 malloc() 在堆上分配此内存。

一种更精简的方法是使用一组 [每个位代表一扇门,您只需要打开和关闭它们来表示门的打开或关闭状态]。实现起来会有点棘手,但您的程序会更精简(至少 16 倍,C int 至少 2 个字节,16 位)并且更快!

关于c - 以下代码中运行时错误(其他)的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12097070/

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