这个题挺简单的,就是题意不是很好理解,该题就是说白了就是:给你(16+n)组颜色值(我的意思是一组颜色值即一个RGB),让你为后n组颜色值的每一组颜色,在前16组中,找一个和它最相近的颜色值。我的代码如下:
#include <iostream> #include <cmath> using namespace std; int PosOfMin(double b[],int n) {//求数组中,最小的数值所在的位置 int i,pos=0; double min=b[0]; for(i=1;i<n;i++) if(min>b[i]) { min=b[i]; pos=i; } return pos; } int main() { //freopen("in.txt","r",stdin); int a[50][3]; double b[16]; int i=0,j,k; double r,s,t; while(scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2])&&(a[i][0]!=-1&&a[i][1]!=-1&&a[i][2]!=-1)) i++; for(i=16;a[i][0]!=-1&&a[i][1]!=-1&&a[i][2]!=-1;i++) { for(j=0;j<16;j++) { r=(double)(a[i][0]-a[j][0]); s=(double)(a[i][1]-a[j][1]); t=(double)(a[i][2]-a[j][2]); b[j]=sqrt(r*r+s*s+t*t); } k=PosOfMin(b,16); printf("(%d,%d,%d) maps to (%d,%d,%d)/n",a[i][0],a[i][1],a[i][2], a[k][0],a[k][1],a[k][2]); } return 0; }
做点简单的题,增加点我的自信吧,呵呵呵……自己要努力啊!