⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1046.cpp

📁 北京大学的一些acm代码。还有一些资料。
💻 CPP
字号:


#include<cstdlib>
#include<cmath>
#include<iostream>
#include<vector>
using namespace std;

struct RGB
{
	int red;
	int green;
	int blue;
};

#ifdef DEBUG
int compare_red(const void *a, const void *b)
{
	return ((RGB*)a)->red - ((RGB*)b)->red;
}

int compare_blue(const void *a, const void *b)
{
	return ((RGB*)a)->blue - ((RGB*)b)->blue;
}

int compare_green(const void *a, const void *b)
{
	return ((RGB*)a)->green - ((RGB*)b)->green;
}
#endif

int get_lowest_distance_index(int *distance, int n)
{
#ifdef DEBUG
	qsort(rgb, n, sizeof(int), compare_blue);
	qsort(rgb, n, sizeof(int), compare_green);
	qsort(rgb, n, sizeof(int), compare_red);
#endif

	int min = 0;
	for(int i = 1; i < n; i++)
	{
		if(distance[i] < distance[min])
		{
			min = i;
		}
	}

	return min;
}

int computer_distance(const RGB *rgb1,const RGB *rgb2)
{
	return (rgb1->red - rgb2->red)*(rgb1->red - rgb2->red) + (rgb1->blue - rgb2->blue)*(rgb1->blue - rgb2->blue) + (rgb1->green - rgb2->green)*(rgb1->green - rgb2->green);
}

/*int main()
{
	vector<RGB> vector_rgb;
	RGB rgb, rgb_16[16];
	int in_red, in_green, in_blue;
	int min_index;
	int distance[16];
	int i = 0;

	while(i < 16)
	{
		cin>>in_red;
		cin>>in_green;
		cin>>in_blue;

		rgb.red = in_red;
		rgb.green = in_green;
		rgb.blue = in_blue;

		rgb_16[i] = rgb;
		i++;
	}
	while(true)
	{
		cin>>in_red;
		cin>>in_green;
		cin>>in_blue;

		rgb.red = in_red;
		rgb.green = in_green;
		rgb.blue = in_blue;

		if(in_red == -1)
			break;
		vector_rgb.push_back(rgb);
	}

	for(i = 0; i < vector_rgb.size(); i++)
	{
		for(int j = 0; j < 16; j++)
		{
			distance[j] = computer_distance(&vector_rgb[i], &rgb_16[j]);
		}
		min_index = get_lowest_distance_index(distance, 16);
		cout<<"("<<vector_rgb[i].red<<", "<<vector_rgb[i].green<<", "<<vector_rgb[i].blue<<")";
		cout<<" maps to "<<"("<<rgb_16[min_index].red<<", "<<rgb_16[min_index].green<<", "<<rgb_16[min_index].blue<<")"<<endl;
	}

	return 0;*/

/*	RGB rgb1, rgb2;
	rgb1.red = 0;
	rgb1.green = 0;
	rgb1.blue = 0;

	rgb2.red = 1;
	rgb2.green = 1;
	rgb2.blue = 1;

	printf("%d\n", computer_distance(&rgb1, &rgb2));
	return 0;
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -