2015-10-21 174 views
-1

This是我正在尝试解决的问题。SIGSEGV错误(运行时错误)

这是我的尝试:

#include <iostream> 
using namespace std; 

int main() 
{ 
long long int n; 
cin>>n; 
long long int a[n],b[n],i,max1=0,max2=0; 
a[0]=0; 
for(i=1;i<n+1;i++){ 
cin>>a[i]; 
if(abs(a[i]-a[i-1])>max1) 
max1=abs(a[i]-a[i-1]); 

} 
b[0]=0; 
for(i=1;i<n+1;i++){ 
cin>>b[i]; 
if(abs(b[i]-b[i-1])>max2) 
max2=abs(b[i]-b[i-1]); 
} 

if(max1>max2) 
{ cout<<"Dom"<<endl; 
cout<<max1;} 
else if(max1<max2) 
{ cout<<"Brian"<<endl; 
cout<<max2; } 
else 
{ 
cout<<"Tie"<<endl; 
cout<<max1; 
} 
//cout << "Hello World!" << endl; 
return 0; 
} 

在执行时,它出现segfaults,虽然。

任何人都可以帮我解决问题吗?

回答

0

由于循环中的最大值in,循环将始终写入超出数组边界的一个元素。要么为每个阵列分配n + 1内存,要么将循环条件设置为i < n

+0

谢谢,我得到了。 :) –