UVA 152-Tree’s a Crowd
题目大意:给三维空间的点的集合,判断每个点与其他点的最小距离并对对应的距离计数,距离小于10才记。
解题思路:开个大小为10的数组进行计数
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int a[100000][3];
int n = 0;
int b[10] = {0};
while(scanf("%d%d%d", &a[n][0], &a[n][1], &a[n][2]) && a[n][0] + a[n][1] + a[n][2] != 0) {
n++;
}
for(int i = 0; i < n; i++) {
int max = 10;
for(int j = 0; j < n; j++) {
if(i != j) {
int m = sqrt(pow((a[i][0] - a[j][0]), 2)+pow((a[i][1] - a[j][1]), 2)+pow(a[i][2] - a[j][2], 2));
if(m < max)
max = m;
}
}
if(max < 10)
b[max]++;
}
for(int i = 0; i < 10; i++)
printf("%4d", b[i]);
printf("\n");
return 0;
}