题意是找出两树间的距离,统计树与树距离在0 ~ 10之间的个数。
代码:
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int x[5001], y[5001], z[5001], s[10];
int dis(int x1, int y1, int z1, int x2, int y2, int z2)
{
return (int)sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2));
}
int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
#endif // LOCAL
int p = 0;
while (scanf("%d%d%d", &x[p], &y[p], &z[p]) != EOF)
{
if (x[p] == 0 && y[p] == 0 && z[p] == 0)
break;
p++;
}
for (int i = 0; i < p; i++)
{
int minn = 10;
for (int j = 0; j < p; j++)
{
if (i != j)
minn = min(minn, dis(x[i], y[i], z[i], x[j], y[j], z[j]));
}
if (minn < 10)
s[minn]++;
}
for (int i = 0; i < 10; i++)
{
printf("%4d", s[i]);
}
printf("\n");
return 0;
}