题目
源地址:
http://poj.org/problem?id=1046
理解
题目并不难,暴力水过即可。用到了结构体的知识,可惜我对结构体的理解还是太过于表层。其实我可以把结构体作为函数的参数输入,这样可以减少很大的代码量。
代码
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;
struct list
{
int r, g, b;
} standard[16];
double dis, tmp;
int ansr, ansg, ansb;
int r, g, b;
double cal(int r1, int r2, int g1, int g2, int b1, int b2)
{
return sqrt((double)((r1 - r2) * (r1 - r2) + (g1 - g2) * (g1 - g2) + (b1 - b2) * (b1 - b2)));
}
int main(int argc, char const *argv[])
{
for (int i = 0; i < 16; i++) scanf("%d%d%d", &standard[i].r, &standard[i].g, &standard[i].b);
while (scanf("%d%d%d", &r, &g, &b) && r != -1)
{
dis = 450.0;
ansr=ansg=ansb=0;
for (int i = 0; i < 16; i++)
{
tmp = cal(r, standard[i].r, g, standard[i].g, b, standard[i].b);
if (tmp<dis)
{
dis = tmp;
ansr = standard[i].r;
ansg = standard[i].g;
ansb = standard[i].b;
}
else
continue;
}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n", r, g, b, ansr, ansg, ansb);
}
return 0;
}
更新日志
- 2014年07月日 已AC。