题目描述
有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为x
i
,纵坐标为y
i
的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。
输入描述:
第一行为一个整数n(n ≤ 1000),表示超超一共拥有n个陷阱。 第二行有n个整数xi,表示第i个陷阱的横坐标 第三行有n个整数yi,表示第i个陷阱的纵坐标 保证坐标都在草地范围内。
输出描述:
输出一个整数,表示小易最少可能多少秒就落入超超的陷阱
思路:
画下图就知道其实就是求陷阱和模目标之间的最短距离,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