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;
    }
    
    
  • 相关阅读:
    第三次作业
    第二次作业
    第一次作业
    第五次作业
    第四次作业
    第三次作业
    刘存俊第二次作业
    数据压缩第一次作业
    第五次作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/naive/p/3568757.html
Copyright © 2011-2022 走看看