CodeChef中代码的运行时错误(SIGSEGV)

时间:2014-12-25 16:40:50

标签: c++ runtime-error sigsegv

我是初学者,这是我在Code Chef上遇到的第一个问题。 我在我的机器上运行我的代码并且它工作正常,但在我在Code Chef上提交后,我收到此错误运行时错误(SIGSEGV)。 我是否为问题使用了太多内存,或者我输错了?

这是我的代码,

#include <iostream>
#include <stdio.h>
using namespace std;
#include <math.h>
#define D(a,b) fabs(a-b)
#define Q(x1,y1) (sqrt((x1)*(x1)+(y1)*(y1)))
#define min(a,b) (a>b?a:b)
#include <cstdlib>
int main()
{
    long int i,k,testno,cones;
    double N[1000],dmid,r,R,x1,y1,temp=0;

    cin >> testno;
    for(i=0;i<testno;i++){
        cin >> r >> R;
        dmid=D(r,R)/2;
        cin >> cones;
        for(k=0;k<3;k++){
            cin >> x1 >> y1;
            if(Q(x1,y1)>dmid){
                N[k]= R-Q(x1,y1);
            }
            else{
                N[k]=Q(x1,y1)-r;
            }
        }    
        for(k=0;k<cones-1;k++){
            temp=min(N[k],N[k+1]);
        }
        printf("%.3f",temp);
        cout << endl;
    }    
    return 0;
}

问题的链接:http://www.codechef.com/problems/COURSE 编辑:不相信我犯了这么荒谬的错误。无论如何,我编辑了代码但仍然遇到了同样的错误。

1 个答案:

答案 0 :(得分:-1)

你写了......

for(k=0;k<3;k++)

考虑到这一点,总会有 3 视锥细胞。但这是错的。您将视锥细胞作为输入。所以这一行必须是,

for(k=0;k<cones;k++)

通过此版本,您将摆脱运行时错误。但公平地说,您当前的解决方案远离正确的解决方案。您可以从this link阅读此问题的编辑,以获得正确的想法。祝你好运。 :)