我是初学者,这是我在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 编辑:不相信我犯了这么荒谬的错误。无论如何,我编辑了代码但仍然遇到了同样的错误。
答案 0 :(得分:-1)
你写了......
for(k=0;k<3;k++)
考虑到这一点,总会有 3 视锥细胞。但这是错的。您将视锥细胞作为输入。所以这一行必须是,
for(k=0;k<cones;k++)
通过此版本,您将摆脱运行时错误。但公平地说,您当前的解决方案远离正确的解决方案。您可以从this link阅读此问题的编辑,以获得正确的想法。祝你好运。 :)