思路:
这题是让 先输入十六组数 然后给后面的每组数 从这十六组数中找通过那个式子值最小的 一组数据 ;
比较简单 不解释
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;
}
}
本文介绍了一个简单的距离匹配算法实现过程,分别用Java和C++两种语言进行编程演示。该算法的目标是从一组预定义的数据集中找到与给定点最近的数据。通过计算三维空间中两点之间的欧式距离来确定最接近的数据点。

812

被折叠的 条评论
为什么被折叠?



