首页 > 代码库 > Color Me Less(水题)
Color Me Less(水题)
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 30564 | Accepted: 14881 |
Description
Input
Output
If there are more than one color with the same smallest distance, please output the color given first in the color set.
Sample Input
0 0 0 255 255 255 0 0 1 1 1 1 128 0 0 0 128 0 128 128 0 0 0 128
126 168 9 35 86 34 133 41 193 128 0 128 0 128 128 128 128 128 255 0 0 0 1 0 0 0 0 255 255 255 253 254 255 77 79 134 81 218 0 -1 -1 -1Sample Output
(0,0,0) maps to (0,0,0) (255,255,255) maps to (255,255,255) (253,254,255) maps to (255,255,255) (77,79,134) maps to (128,128,128) (81,218,0) maps to (126,168,9)
题意:这相当于是在一个三维坐标里求点之间的最小距离。先输入十六个点,从第17行到文件结束 找每一行的点距离上面十六行距离最短的点 然后输出。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define inf 999999999
struct node
{
int r,g,b;
}cor1[16],cor2;
int main()
{
int i;
int dis,mdis;
int flag;
for(i=0;i<16;i++)
{
scanf("%d %d %d",&cor1[i].r,&cor1[i].g,&cor1[i].b);
}
while(1)
{
scanf("%d %d %d",&cor2.r,&cor2.g,&cor2.b);
mdis=inf;
if(cor2.r==-1&&cor2.g==-1&&cor2.b==-1)
break;
for(i=0;i<16;i++)
{
dis=(cor1[i].r-cor2.r)*(cor1[i].r-cor2.r)+(cor1[i].g-cor2.g)*(cor1[i].g-cor2.g)+(cor1[i].b-cor2.b)*(cor1[i].b-cor2.b);
if(mdis>dis)
{
mdis=dis;
flag=i;
}
}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",cor2.r,cor2.g,cor2.b,cor1[flag].r,cor1[flag].g,cor1[flag].b);}
return 0;}
Color Me Less(水题)