題目描述:
小廣附近有家盒馬店,該店提供配送服務,配送範圍是系統根據各項指標決策出的一個多邊形,假設小廣現在的位置爲(x,y),請問小廣是否在該盒馬店的配送範圍內,如果不在配送範圍內請問他要最少要走多少距離才能到盒馬店配送範圍內。假設座標點在二維平面上,不考慮地球曲率等因素。
輸入:
x,y(代表小廣所在的位置,x表示橫座標,y表示縱座標)
x1,y1,x2,y2,x3,y3....xn,yn(代表該盒馬店的配送範圍多邊形,其中x表示橫座標,y表示縱座標,xi和yi代表多邊形一個點,點與點按順序相連形成邊,並且最後一個點(xn,yn)與第一個點(x1,y1)相連)
輸出:
請問小廣是否在盒馬店的配送範圍內,如果不在配送範圍內請問他要最少走多少距離才能到盒馬店配送範圍內,輸出結果爲整數(四捨五入)
舉例說明:
輸入:
1,1
0,0,0,2,2,2,2,0
輸出:
yes,0
輸入:
2,2
0,0,0,2,2,2,2,0
輸出:
yes,0
輸入:
3,0
0,0,0,2,2,2,2,0
輸出:
no,1
輸入:
3,4
0,0,0,2,2,2,2,0
輸出:
no,2
通過30%。哈哈哈
import java.util.*;
import java.util.List;
public class Main {
/** 請完成下面這個函數,實現題目要求的功能 **/
/**
* 當然,你也可以不按照這個模板來作答,完全按照自己的想法來
**/
public static String measureDistance(List<Double> xList, List<Double> yList, double x, double y) {
if(xList==null||yList==null||xList.size()==0||yList.size()==0)
return "error";
Collections.sort(xList);
Collections.sort(yList);
double xmin = xList.get(0);
double xmax = xList.get(xList.size()-1);
double ymin = yList.get(0);
double ymax = yList.get(xList.size()-1);
if(x<=xmax&&x>=xmin&&y>=ymin&&y<=ymax)
return "yes,0";
else
return "no";
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String line = in.nextLine();
//(x,y)爲小廣所在的位置
double x = Double.parseDouble(line.split(",")[0]);
double y = Double.parseDouble(line.split(",")[1]);
line = in.nextLine();
//xList記錄了多邊形n個點的x座標,yList記錄了多邊形n個點的y座標
List<Double> xList = new ArrayList<>();
List<Double> yList = new ArrayList<>();
String[] array = line.split(",");
for(int i = 0; i < array.length; i++) {
xList.add(Double.parseDouble(array[i]));
yList.add(Double.parseDouble(array[i+1]));
i++;
}
in.close();
System.out.println(measureDistance(xList, yList, x, y));
}
}