题意:求每一颗树距其他树最近的距离,如果小于10,那么相对应的距离点+1,输出距离为0,1,2,3,4,5,6,7,8,9的点的个数。
用两个for循环遍历。
代码如下:
1 #include<stdio.h> 2 #include<math.h> 3 4 typedef struct 5 { 6 int l, w, h; 7 }node; 8 9 int dis(node a, node b) 10 { 11 return (int)(sqrt( (double)((a.l-b.l)*(a.l-b.l)+(a.h-b.h)*(a.h-b.h) + (a.w-b.w)*(a.w-b.w)) ) + 5e-6); 12 } 13 14 int main() 15 { 16 int i, j, k, count[10]={0}; 17 int min, d; 18 node tree[5000]; 19 i=0; 20 scanf("%d%d%d", &tree[i].l,&tree[i].w,&tree[i].h); 21 while(tree[i].l||tree[i].h||tree[i].w) 22 { 23 i++; 24 scanf("%d%d%d", &tree[i].l,&tree[i].w,&tree[i].h); 25 } 26 for (k=0; k<i; k++) 27 { 28 min=1000; 29 for (j=0; j<i; j++) 30 { 31 d=dis(tree[k],tree[j]); 32 if (min > d && k!=j) 33 min=d; 34 } 35 if (min>=0 && min<=9) 36 count[min]++; 37 } 38 for (i=0; i<10; i++) 39 { 40 printf("%4d", count[i]); 41 } 42 printf("\n"); 43 return 0; 44 }