ZOJ-1067-Color Me Less

Nothing to say,整理好输入,选一个最小的距离就是了

//2007-12-30 00:57:25 Accepted 1067 C++ 00:00.00 396K
#include<stdio.h>
#include<math.h>

int target[16][3];
int now[3];

double distance(int a[3],int b[3])
{
 double re;
 re = (a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])+(a[2]-b[2])*(a[2]-b[2]);
 return sqrt(re);
}

int findmin(int a[3])
{
 int i,key=0;
 double min=distance(a,target[0]);
 double t;
 for(i=1;i<16;i++)
 {
  t = distance(a,target[i]);
  if((min-t)>0.00001)
  {
   min = t;
   key = i;
  }
 }
 return key;
}

int main()
{
 freopen("1067.txt","r",stdin);
 int i;
 for(i=0;i<16;i++)
 {
  scanf("%d %d %d", &target[i][0],&target[i][1],&target[i][2]);
 }

 while(scanf("%d %d %d", &now[0],  &now[1], &now[2]) != EOF)
    {
  if(now[0]==-1 && now[1]==-1 && now[2]==-1)
   break;
  else
  {
   i = findmin(now);
   printf("(%d,%d,%d) maps to (%d,%d,%d)/n",now[0],now[1],now[2],target[i][0],target[i][1],target[i][2]);
  }
 }
 fclose(stdin);
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值