荣耀8.30笔试 采蜜
题目描述
平原上,一群蜜蜂离开蜂巢采蜜,要连续采集5片花丛后归巢,已知5片花丛相对蜂巢的坐标,请你帮它们规划一下到访花儿的顺序,以使飞行总距离最短。
输入描述
以蜂巢为平面坐标原点的5片花丛A、B、C、D、E的坐标,坐标值为整数。
输出描述
从出发到返回蜂巢最短路径的长度取整值,取整办法为舍弃小数点后面的值。
示例
输入
200 0 200 10 200 50 200 30 200 25
输出
456
只通过测例,未实测,仅供参考
import java.util.Scanner;
public class ggg {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double[][] num = new double[5][2];
for (int i = 0; i < 5; i++) {
num[i][0] = scan.nextInt();
num[i][1] = scan.nextInt();
}
int[] num1 = new int[6];
double ans = 0;
ans=hhh(num,num1,0,0,5,0,1000000);
System.out.println(ans);
}
static public double hhh(double[][] num,int[] num1,double x,double y,int t,double ttt,double m){
double tt=ttt;
num1[t]=1;
for (int i = 0; i < 5; i++) {
if(num1[i]==0){
ttt=tt+Math.sqrt(Math.pow(num[i][0]-x,2)+Math.pow(num[i][1]-y,2));
m=hhh(num,num1,num[i][0],num[i][1],i,ttt,m);
num1[i]=0;
}
}
int s=0;
for (int i = 0; i < 5; i++) {
if(num1[i]==1){
s++;
}
}
if(s==5){
m=Math.min(tt+Math.sqrt(Math.pow(num[t][0],2)+Math.pow(num[t][1],2)),m);
}
return m;
}
}
腾讯成长空间 5958人发布
