简单题,纯计算,找出一个距离最小值 //Accepted 1067 C++ 00:00.00 396K #include<stdio.h> #include<math.h> int target[16][3]; int now[3]; double distance(int a[3],int b[3]) { double re; re = (a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])+(a[2]-b[2])*(a[2]-b[2]); return sqrt(re); } int findmin(int a[3]) { int i,key=0; double min=distance(a,target[0]); double t; for(i=1;i<16;i++) { t = distance(a,target[i]); if((min-t)>0.00001) { min = t; key = i; } } return key; } int main() { freopen("1067.txt","r",stdin); int i; for(i=0;i<16;i++) { scanf("%d %d %d", &target[i][0],&target[i][1],&target[i][2]); } while(scanf("%d %d %d", &now[0], &now[1], &now[2]) != EOF) { if(now[0]==-1 && now[1]==-1 && now[2]==-1) break; else { i = findmin(now); printf("(%d,%d,%d) maps to (%d,%d,%d)/n",now[0],now[1],now[2],target[i][0],target[i][1],target[i][2]); } } fclose(stdin); return 0; }