1046是个水题,就不多说了,就贴上代码。 #include<iostream> #include<cmath> using namespace std; void judge(int check[],int color[]) { int top=-1; int *order=new int[16]; for(int i=0;i<16;i++) { int R1=check[3*i]; int G1=check[3*i+1]; int B1=check[3*i+2]; order[i]=sqrt(pow((float)(color[0]-R1),2)+pow((float)(color[1]-G1),2)+pow((float)(color[2]-B1),2)); } int min=order[0]; int mino=0; for(int i=1;i<16;i++) { if(min>order[i]) { min=order[i]; mino=i; } } cout<<"("<<color[0]<<","<<color[1]<<","<<color[2]<<")"<<" maps to "; cout<<"("<<check[3*mino]<<","<<check[3*mino+1]<<","<<check[3*mino+2]<<")/n"; free(order); } int main() { int *check=new int[48]; int *color=new int[3]; for(int i=0;i<48;i++) { cin>>check[i]; } while(true) { cin>>color[0]>>color[1]>>color[2]; bool tag=false; for(int i=0;i<3;i++) { if(color[i]!=-1) { tag=true; break; } } if(tag) { judge(check,color); } else { free(check); free(color); return 1; } } system("pause"); return 0; }