ZOJ Problem Set

这道题目很简单,考察的就是结构体数组的应用,直接贴代码了

#include <stdio.h>
#include <math.h>

typedef struct color
{
	int r;
	int g;
	int b;

}color;

double distance(color c1,color c2)
{
	return sqrt(pow((c1.b-c2.b),2)+pow((c1.g-c2.g),2)+pow((c1.r-c2.r),2));
}

int equal(color c1,color c2)
{
	if(c1.r==c2.r&&c1.g==c2.g&&c1.b==c2.b)
		return 1;
	else 
		return 0;
}

int main()
{
	color t[16];
	int i;
	for(i=0;i<16;i++)
		scanf("%d%d%d",&t[i].r,&t[i].g,&t[i].b);
	color c[1000];
	color m[1000];
	int r,g,b,n=0;
	while(scanf("%d%d%d",&r,&g,&b)!=EOF&&r!=-1||g!=-1||b!=-1)
	{
		c[n].r=r;
		c[n].g=g;
		c[n].b=b;
		m[n].r=t[0].r;
		m[n].g=t[0].g;
		m[n].b=t[0].b;

		for(i=1;i<16;i++)
		{
			if(equal(c[n],t[i]))
			{
				m[n].r=t[i].r;
				m[n].g=t[i].g;
				m[n].b=t[i].b;
				break;
			}
			if(distance(c[n],t[i])<distance(c[n],m[n]))
			{
				m[n].r=t[i].r;
				m[n].g=t[i].g;
				m[n].b=t[i].b;
			}
		}
		n++;
	}

	for(i=0;i<n;i++)
	{
		printf("(%d,%d,%d) maps to (%d,%d,%d)
",c[i].r,c[i].g,c[i].b,m[i].r,m[i].g,m[i].b);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/xlturing/p/3300525.html