编程题:解救小易

 
 

题目描述

有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为x i  ,纵坐标为y i  的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。

输入描述:

第一行为一个整数n(n ≤ 1000),表示超超一共拥有n个陷阱。
第二行有n个整数xi,表示第i个陷阱的横坐标
第三行有n个整数yi,表示第i个陷阱的纵坐标
保证坐标都在草地范围内。

输出描述:

输出一个整数,表示小易最少可能多少秒就落入超超的陷阱
示例1

输入

复制
3
4 6 8
1 2 1

输出

复制
3

思路:

画下图就知道其实就是求陷阱和模目标之间的最短距离,x-1+y-1(x,y为坐标);

代码:

 
 
import java.util.Scanner;

/**
 * Created by ASUS on 2018/6/15
 *
 * @Authod Grey Wolf
 */
public class Practice {

    public static void main(String[] args) {

        Practice practice=new Practice();
        practice.sys();
    }

    private void sys() {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int []x=new int[n];
        int []y=new int[n];
        int i;
        for (i=0;i<n;i++){
            x[i]=scanner.nextInt();
        }
        for (i=0;i<n;i++){
            y[i]=scanner.nextInt();
        }
        int res=getRes(n,x,y);
        System.out.println(res);
    }

    private int getRes(int n, int[] x, int[] y) {
        int res=0;
        //假设最快的次数
        int min=Integer.MAX_VALUE;
        int i;
        for (i=0;i<n;i++){
            res=x[i]+y[i]-2;
            if (res<min){
                min=res;
            }
        }
        return min;
    }

}

效果:

3
4 6 8
1 2 1

3


我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。


猜你喜欢

转载自blog.csdn.net/weixin_39220472/article/details/80708588
今日推荐