题意:求各棵树到其他树的最短距离,然后记录下来,距离只有0-9
思路:暴力把。。。直接搜索,但要记住,最后的距离是向下取整,而不是向上取整,刚开始理解错误,用ceil取整距离,WA了好多次,后来才发现,直接用int强制转化
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int dis[11];
struct space{
double x, y, z;
}space[5050];
double lenth(double a, double b, double c, double d, double e, double f){
double l;
return l = sqrt((a - d) * (a - d) + (b - e) * (b - e) + (c - f) * (c - f));
}
int main(){
int cnt = 0, min;
double L;
memset(dis, 0, sizeof(dis));
while (scanf("%lf%lf%lf", &space[cnt].x, &space[cnt].y, &space[cnt].z)){
if (!space[cnt].x && !space[cnt].y && !space[cnt].z)
break;
cnt++;
}
for(int i = 0; i < cnt; i++){
min = 9999999;
for(int j = 0; j < cnt; j++){
if (i == j)
continue;
L = lenth(space[i].x, space[i].y, space[i].z, space[j].x, space[j].y, space[j].z);
if (L < min)
min = L;
}
if (min <= 9){
int k = floor(min);
dis[k]++;
}
}
for(int i = 0; i < 10; i++)
printf("%4d", dis[i]);
printf("\n");
return 0;
}