UVa:152 - Tree's a Crowd

题意:输入若干个点的三维坐标,以坐标(0,0,0)结束,计算出每个点和其它各点的距离,并求出每个点和其它各点的距离中的最小距离(数值要取整,如1.414,则取值1,不用四舍五入),如果该最小距离小于10,则histogram(直方图)中数值等于该最小距离的位置加1,最后输出histogram(直方图),每个数占4个空间位。(from 百度)

表示读不懂题目,英语太差啊~~但则这道题很水,暴力直接解决…

#include<stdio.h>
#include<string.h>
#include<math.h>
const int maxn=5000+10;
int tree[maxn][3],a[10];
int main()
{
    int t=0;
    memset(a,0,sizeof(a));
    while(~scanf("%d%d%d",&tree[t][0],&tree[t][1],&tree[t][2])){
        if(!tree[t][0]&&!tree[t][1]&&!tree[t][2])
            break;
        t++;
    }
    for(int i=0;i<t;i++){
        int min=10,k=0;
        for(int j=0;j<t;j++){
            if(i!=j){
                int sum=(tree[i][0]-tree[j][0])*(tree[i][0]-tree[j][0])+(tree[i][1]-tree[j][1])*(tree[i][1]-tree[j][1])+(tree[i][2]-tree[j][2])*(tree[i][2]-tree[j][2]);
                int dis=sqrt(sum);
                if(dis<min)
                    min=dis;
            }
        }
        if(min<10)
            a[min]++;
    }
    for(int i=0;i<10;i++)
        printf("%4d",a[i]);
    printf("\n");
    return 0;
}

--------------------------------------------------------------------------------------------

          Keep It Simple,Stupid!

--------------------------------------------------------------------------------------------



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值