http://poj.org/problem?id=1046 Color Me Less
Frozen镇楼
一道直接搜索的题 。。。 先读取16个三原色,然后再接受一组组颜色,放在三维坐标空间中,求距离最短的是哪组。
无难度
上代码
#include <cstdio>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct POINT{
int x;
int y;
int z;
};
struct POINT p[16];
POINT ppt;
int distance(int i)
{
return (ppt.x-p[i].x)*(ppt.x-p[i].x)+
(ppt.y-p[i].y)*(ppt.y-p[i].y)+
(ppt.z-p[i].z)*(ppt.z-p[i].z);
}
int main()
{
//ifstream cin("input.txt");
for (int i = 0; i < 16; ++i)
{
cin>>p[i].x>>p[i].y>>p[i].z;
}
while(1)
{
cin>>ppt.x>>ppt.y>>ppt.z;
if(ppt.x==-1) return 0;
int min_dis=0x3f3f3f3f;
int xx,yy,zz;
for (int i = 0; i < 16; ++i)
{
int dis=distance(i);
if(min_dis>dis) {
min_dis=dis;
xx=p[i].x;
yy=p[i].y;
zz=p[i].z;
}}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",ppt.x,ppt.y,ppt.z,xx,yy,zz);
}
return 0;
}