您的位置:首页 > 其它

POJ 1046 解题报告

2014-11-18 08:06 288 查看
这道题看着挺麻烦的。之前写过一个2D的KNN算法,用kd-tree实现的。我以为这个是实现3D的nearest neighbor.看了discuss发现标签是水题之后就知道我想复杂了。其实自己应该有这样的判断力,从要判断的数据个数就应该知道了,target只有16个。

1046Accepted712K0MSG++1119B
/*
ID: thestor1
LANG: C++
TASK: poj1046
*/
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <limits>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <cassert>

using namespace std;

int main()
{
std::vector<std::vector<int> > colors(16, std::vector<int>(3, 0));

for (int i = 0; i < 16; ++i)
{
for (int j = 0; j < 3; ++j)
{
cin >> colors[i][j];
}
}

int x, y, z;
while (true)
{
cin >> x >> y >> z;
if (x == -1)
{
break;
}
int mindis = -1, mini;

for (int i = 0; i < colors.size(); ++i)
{
int dis = (x - colors[i][0]) * (x - colors[i][0]) + (y - colors[i][1]) * (y - colors[i][1]) + (z - colors[i][2]) * (z - colors[i][2]);
if (mindis < 0 || dis < mindis)
{
mindis = dis;
mini = i;
}
}

cout << "(" << x << "," << y << "," << z << ") maps to (" << colors[mini][0] << "," << colors[mini][1] << "," << colors[mini][2] << ")" << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: