zrq495
www.zrq495.com

题意:求每一颗树距其他树最近的距离,如果小于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 }
posted on 2012-07-17 10:21  zrq495  阅读(295)  评论(0编辑  收藏  举报