| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位帮我看看代码,从昨天开始就一直WA...郁闷#include "math.h"
#include "iostream.h"
#include "stdio.h"
double d[2000][2000];
int main(){
double sita[2000],fai[2000],sum,min,dl;
double x[2000],y[2000],z[2000];
int n,i,j,flag;
cin>>n;
for(i=0;i<n;i++){
cin>>sita[i]>>fai[i];
x[i]=sin((90-sita[i])*3.1415927/180)*cos((180+fai[i])*3.1415927/180);
y[i]=sin((90-sita[i])*3.1415927/180)*sin((180+fai[i])*3.1415927/180);
z[i]=cos((90-sita[i])*3.1415927/180);
} //将经纬度变成球坐标后转为三维坐标
for(i=0;i<n;i++){
d[i][i]=0;
for(j=i+1;j<n;j++){
dl=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])+(z[i]-z[j])*(z[i]-z[j]));
d[i][j]=asin(dl/2)*2;
d[j][i]=d[i][j];
}
} //计算两点弦长并转化为弧长
min=1e10;
for(i=0;i<n;i++){
sum=0;
for(j=0;j<n;j++)
sum+=d[i][j]; //将从某点出发所到达的其他所有点的距离相加;
if(min>sum){
min=sum;
flag=i;
} //找求出最小的距离和并做标记
}
if(n!=0)printf("%.2lf %.2lf\n",sita[flag],fai[flag]);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator