为啥在OJ上会判定Segmentation Fault 啊,感觉没有数组越界
题目是2019蓝桥杯C++组完全二叉树的遍历
代码如下:
#include
#include
using namespace std;
const int N=1e5+10;
int a[25],n,num[N];
int main()
{
// 请在此输入您的代码
int x;
cin>>x;
for(int i=1;i<=x;i++)
cin>>num[i];
while(x)
{
int m=(int)pow(2,n);
for(int i=m;i<2*m&&iint Max=0,l;
for(int i=0;i<25;i++)
if(Max1<return 0;
}
变量n没有初始化吧
while(x)这里最好再加一个条件,n<25,避免a数组越界
因为程序没有对数组 a 进行初始化,导致数组 a 中的元素的值不确定。因此在执行 a[n]+=num[i] 时,可能会访问数组 a 中未定义的内存地址,导致程序崩溃。使用int a[25]={0}将数组 a 中的元素全部初始化为0,记得养成声明即初始化的习惯。