zoukankan      html  css  js  c++  java
  • 阿里巴巴笔试题

    题目描述:

    小广附近有家盒马店,该店提供配送服务,配送范围是系统根据各项指标决策出的一个多边形,假设小广现在的位置为(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

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main{
    	
    	public static void main(String[] args) {
    	    
    	    Scanner scan = new Scanner(System.in);
    	    String str= scan.next();
    	    String s = str.replace(",","");
    	    char[] b = s.toCharArray();
    	    int[] arr = new int[2];
    	    for(int i=0;i<b.length;i++){
    	    	arr[i] = b[i]-48;
    	    }
    	    String str2= scan.next();
    	    String s2 = str2.replace(",","");
    	    char[] b2 = s2.toCharArray();
    	    int[] arr3 = new int[4];
    	    int[] arr4 = new int[4];   
    	    for(int i=0,j=0;i<b2.length;i+=2){
    	    	arr3[j++] = b2[i]-48;
    	    }
    	    Arrays.sort(arr3);
    	    for(int i=1,j=0;i<b2.length;i+=2){
    	    	arr4[j++] = b2[i]-48;
    	    }
    	    Arrays.sort(arr4);
    	    
    	    if(arr[0]>=arr3[0]&&arr[0]<=arr3[3]&&arr[1]>=arr4[0]&&arr[1]<=arr4[3]){
    	    	System.out.println("yes,0");
    	    }
    	    if(arr[0]>=arr3[0]&&arr[0]<=arr3[3]&&arr[1]>arr4[3]){
    	    	int y = arr[1] - arr4[3];
    	    	if(y<0){
    	    		y = -y;
    	    	}
    	    	System.out.println("no,"+y);
    	    }
    	    if(arr[0]>arr3[3]&&arr[1]>=arr3[0]&&arr[1]<=arr4[3]){
    	    	int x = arr[0] - arr3[3];
    	    	if(x<0){
    	    		x = -x;
    	    	}
    	    	System.out.println("no,"+x);
    	    }
    	    if(arr[0]>arr3[3]&&arr[1]>arr4[3]){
    	    	int x = arr[0] - arr3[3];
    	    	if(x<0){
    	    		x = -x;
    	    	}
    	    	int y = arr[1] - arr4[3];
    	    	if(y<0){
    	    		y = -y;
    	    	}
    	    	int m =x;
    	    	if(m<y){
    	    		m = y;
    	    	}
    	    	System.out.println("no,"+m);
    	    }
    	}
    
    }
    

      

  • 相关阅读:
    指针和数组的关系
    深入学习数组
    const关键字与指针
    野指针是什么
    指针带来的一些符号的理解
    指针的本质
    内存管理之堆
    内存管理之栈
    元类
    断点调式和面向对象进阶
  • 原文地址:https://www.cnblogs.com/hgc-bky/p/9607052.html
Copyright © 2011-2022 走看看