思路:
这题是让 先输入十六组数 然后给后面的每组数 从这十六组数中找通过那个式子值最小的 一组数据 ;
比较简单 不解释
java:
import java.util.Scanner;
public class Color_Me_Less_1067 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int arr[][]=new int [16][3];
for(int i=0;i<16;i++){
arr[i][0]=s.nextInt();
arr[i][1]=s.nextInt();
arr[i][2]=s.nextInt();
}
int a,b,c;
while((a=s.nextInt())!=-1){
b=s.nextInt();
c=s.nextInt();
double min=99999;
double sum;
int flag=0;
for(int i=0;i<16;i++){
sum=Math.sqrt((a-arr[i][0])*(a-arr[i][0])+(b-arr[i][1])*(b-arr[i][1])+(c-arr[i][2])*(c-arr[i][2]));
if(sum<min){
min=sum;
flag=i;
}
}
System.out.println("("+a+","+b+","+c+") maps to ("+arr[flag][0]+","+arr[flag][1]+","+arr[flag][2]+")");
}
}
}
c++:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int arr[16][3];
int a,b,c;
for(int i=0;i<16;i++){
cin>>a>>b>>c;
arr[i][0]=a;
arr[i][1]=b;
arr[i][2]=c;
}
while(cin>>a&&a!=-1){
cin>>b>>c;
double min=99999;
double sum;
int flag=0;
for(int i=0;i<16;i++){
sum=sqrt((a-arr[i][0])*(a-arr[i][0])+(b-arr[i][1])*(b-arr[i][1])+(c-arr[i][2])*(c-arr[i][2]));
if(sum<min){
min=sum;
flag=i;
}
}
cout<<"("<<a<<","<<b<<","<<c<<") maps to ("<<arr[flag][0]<<","<<arr[flag][1]<<","<<arr[flag][2]<<")"<<endl;
}
}