阵列分割错误在斐波那契数程序
Array Segmentation fault error in fibbonacci number program
我有疑问…它在ideone和我的gcc编译器上运行良好,但是…codechef给出运行时错误…p请帮助
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
//printf("thisis it");
int i,n,t;
long int a[200000],f[100008];
f[0]=0;f[1]=1;
for(i=1;i<200000;i++)
a[i]=0;
i=1;
while(f[i]<=100000)
{
i++;
f[i]=f[i-1]+f[i-2];
a[f[i]]=1;
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if(a[n]==1)
printf("Yesn");
else
printf("Non");
}
return 0;
}
请帮…为什么它在编码器上给出运行时错误…虽然一切正常....
我想这里有一个错误:
a[f[i]]=1;
甚至第40个斐波那契数(102334155)将大于200000
,因此它将超出a
的范围。
更新:对不起,我没有注意到循环运行直到f[I] <= 10000,而不是I <= 10000。
另一个可能的问题是
if(a[n]==1)
你不检查n是否小于a的大小,如果有人输入一个非常大的数字,代码可能会产生段错误
首先,为什么只从第二个值初始化a[] ?A[0]应该是不请自来的?
第二,似乎你的问题是与[f[i]]=1;你的寻址f[i]的第28个值应该是317811,这超过了一个大小。
这段代码有些地方太复杂了,我建议修改一下
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何在C++中从字符串中分割字符
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- G :内部编译器错误:分割故障(程序CC1PLUS) - 我在哪里开始
- 二进制搜索树操作程序错误:分割故障(核心倾倒)
- 使用向量的 C++ 程序中的分割错误
- 分割故障程序编译为共享库,但不静态
- 在一个动态分配的数组的程序中分割故障
- dijkstra算法的C++程序中的分割错误
- C 程序中的分割故障
- 我的程序给我一个分割错误(c++)
- 分割故障,程序工作正常
- 编码程序分割错误
- 程序不断得到分割错误
- 超过时间限制-简单程序-可分割性测试
- 阵列分割错误在斐波那契数程序