继续水题战略,1046读懂题意后不难 AC代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{double s,D;
int i,j,min,flag,target[16][3],color[3];
for(i=0;i<16;i++)
for(j=0;j<3;j++)
cin>>target[i][j];
while(1)
{min=500;
for(j=0;j<3;j++)
cin>>color[j];
if(color[0]==-1)
break;
for(i=0;i<16;i++)
{s=0;
for(j=0;j<3;j++)
s+=(color[j]-target[i][j])*(color[j]-target[i][j]);
D=sqrt(s);
if(D<min)
{min=D;
flag=i;}}
cout<<"("<<color[0]<<","<<color[1]<<","<<color[2]<<") maps to ("<<target[flag][0]<<","<<target[flag][1]<<","<<target[flag][2]<<")"<<endl;
}
return 0;}
只要把平方根付给的变量设为双精度就行了,其他没什么。