求解一道java基础题,自己看半天没看明白。

lizhongyue248 2017-06-11 12:08:16


题目如上,求大神解释一下,并给下源代码。看题目半天没看懂什么意思。有想过使用分治的策略来求,然后用二维数组表示点集,但感觉不对啊,有个Location返回值,看半天不懂。。。。
...全文
980 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
skgary 2017-09-15
  • 打赏
  • 举报
回复
引用 楼主 lizhongyue248 的回复:
题目如上,求大神解释一下,并给下源代码。看题目半天没看懂什么意思。有想过使用分治的策略来求,然后用二维数组表示点集,但感觉不对啊,有个Location返回值,看半天不懂。。。。
题目 错了呗。 函数应该是 Location getNearest(Collection <Location > locations)才对。
  • 打赏
  • 举报
回复

package org.cm.test;

import java.util.Random;

public class Location {
	private int x;
	private int y;
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
	static int[][] locations;
	public Location locationNearest(Location MyLocation){
		locations =  new int[5][2];
		Random rd = new Random();
		double[] mm = new double[5];
		for (int i = 0; i < locations.length; i++) {
			System.out.println("-------"+i+"-------");
			for (int j = 0; j < locations[i].length; j++) {
				locations[i][j]=rd.nextInt(100);
				System.out.print(locations[i][j]+"  ");
			}
			mm[i] = Math.pow(Math.pow((MyLocation.x+0.0-locations[i][0]), 2)+Math.pow((0.0+MyLocation.y-locations[i][1]), 2), 1.0/2);
			System.out.println(mm[i]);
		}
		int minIndex = 0;
		double min = mm[0];
		for (int i = 0; i < mm.length; i++) {
			if(min>mm[i]){
				min = mm[i];
				minIndex = i;
			}
		}
		MyLocation.setX(locations[minIndex][0]);
		MyLocation.setY(locations[minIndex][1]);
		return MyLocation;
		
	}
	
	public static void main(String[] args) {
		System.out.println(Math.pow(1.414, 2));
		Location location = new Location();
		location.setX(0);
		location.setY(0);
		Location locationNearest = location.locationNearest(location);
		System.out.println("最近的店铺坐标为:x="+locationNearest.getX()+",y="+locationNearest.getY());
	}
}
110成成 2017-06-15
  • 打赏
  • 举报
回复
没那么好弄吧,首先你这是直线距离还是说的实际距离, 位置一般都有经纬度信息,但是应该不能直接这样算吧
fei550223122 2017-06-15
  • 打赏
  • 举报
回复
把地图比作为五子棋的棋盘那样,每个点有XY坐标。任意二个点求直线距离,这样好理解吧
yubill727 2017-06-14
  • 打赏
  • 举报
回复
理论:先写Location类,实现带返回位置的数组的方法,再实现上面的方法,根据勾股求到最近的店铺,调用Location的方法实现返回位置
gd_550569627 2017-06-12
  • 打赏
  • 举报
回复
首先用Location方法上面定义二维数组,X,Y。来确定位置。 第二,我们利用反射,写一方法写出它们的大小。我们用A, B, C圆表示 第三,选择最小的距离,如果没有东西挡着,用勾股定理即可。 如果有东西挡着,A(0,0),B(1,1), C(2,2)。A到B的距离用勾股定理表示,另外由于B物体 是有体积的。宽就是B点半径,再利用勾股定理,得出A跨B的实际距离。同理 可得C的距离。
cd437095778 2017-06-11
  • 打赏
  • 举报
回复
我是初学者渣渣,我觉得题目应该是说一个商铺是一个数组,数组长度是2,分别是x坐标和y坐标,然后再把全部商铺装进一个数组,这就形成了二维数组。 然后根据你目前的位置的坐标去遍历二维数组,找出和你最近的x和y,如果最近的x和y不是在同一个商铺,就把这两个值再比较,谁近就选谁。
丄whistle 2017-06-11
  • 打赏
  • 举报
回复
返回一个离当前位置最近的Location商铺位置对象。
mmqw 2017-06-11
  • 打赏
  • 举报
回复
勾股定理啊
lizhongyue248 2017-06-11
  • 打赏
  • 举报
回复
引用 1 楼 baidu_27893705 的回复:
a的平方加b的平方开根号。
不懂。。。
yannsPeng 2017-06-11
  • 打赏
  • 举报
回复
a的平方加b的平方开根号。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧