这题最大难度在于英文,好吧,其实是求一个点到另外其他点的最小距离,如果小于10则记录一次
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
inline double power( double num )
{
return num*num;
}
int main()
{
int dis[10], a, min;
double x[6000], y[6000], z[6000];
int num[10];
memset( dis, 0, sizeof(dis) );
a = 0;
while( scanf( "%lf %lf %lf\n", &x[a], &y[a], &z[a] ) )
{
if( x[a] == 0 && y[a] == 0 && z[a] == 0 )
break;
else
a++;
}
for( int i = 0; i < a; i++ )
{
min = 100;
for( int j = 0; j < a; j++ )
{
if ( j != i )
{
num[i] = (int)sqrt( power(x[i]-x[j]) + power(y[i]-y[j]) + power(z[i]-z[j]) );
if( num[i] < min )
min = num[i];
}
}
if( min < 10 )
dis[min]++;
}
for( int i = 0; i < 10; i++ )
printf( "%4d", dis[i] );
printf( "\n" );
return 0;
}