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;
}

發佈了68 篇原創文章 · 獲贊 26 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章