zoukankan      html  css  js  c++  java
  • ZOJ 1067 Color Me Less

    原题链接

    题目大意:一道类似于简单图像压缩的题目。给定一个调色板,然后把24位真彩色按照就近原则聚类。

    解法:每个像素的色彩都是RGB三个值,相当于三维空间的一个点。所以当一个新的像素进来时,分别和调色板中的每一个颜色求欧式距离,距离最近的那个点就是应该归属的那个类。

    参考代码:

    #include<stdio.h>
    #include<math.h>
    
    #define R 0
    #define G 1
    #define B 2
    
    int target[16][3];
    
    int main(){
    	int i,j,min,index;
    	int RGB[3];
    	float dist;
    	for(i=0;i<16;i++){
    		scanf("%d%d%d",&target[i][R],&target[i][G],&target[i][B]);
    	}
    	while(scanf("%d%d%d",&RGB[R],&RGB[G],&RGB[B]))
    	{
    		if(RGB[R]==-1||RGB[G]==-1||RGB[B]==-1)
    			break;
    		min=3*255*255;
    		for(i=0;i<16;i++){
    			dist=(RGB[R]-target[i][R])*(RGB[R]-target[i][R])+(RGB[G]-target[i][G])*(RGB[G]-target[i][G])
    				+(RGB[B]-target[i][B])*(RGB[B]-target[i][B]);
    			if(dist<min){
    				min=dist;
    				index=i;
    			}
    		}
    		printf("(%d,%d,%d) maps to (%d,%d,%d)
    ",RGB[R],RGB[G],RGB[B],target[index][R],target[index][G],target[index][B]);
    
    	}
    
    	return 0;
    }
    
    
  • 相关阅读:
    设置与获取Cookie
    事件对象详解
    兼容各浏览器的鼠标滚轮事件
    正则对象与正则表达式的基础学习
    Ajax 学习
    禅道使用流程概述
    Fiddler、Maven介绍
    Locust安装教程与使用
    常用工具软件包下载地址
    SVN合并步骤
  • 原文地址:https://www.cnblogs.com/naive/p/3568757.html
Copyright © 2011-2022 走看看