编程题01-约会

题目描述:

Bob和Alice有个约会,一大早Bob就从点(0,0)出发,前往约会地点(a,b)。Bob没有一点方向感,因此他每次都随机的向上下左右四个方向走一步。简而言之,如果Bob当前在(x,y),那么下一步他有可能到达(x+1,y),(x-1,y),(x,y+1),(x,y-1)。很显然,当他到达目的地的时候,已经很晚了,Alice早已离去。第二天,Alice质问Bob为什么放她鸽子,Bob说他昨天花了s步到达了约会地点。Alice怀疑Bob是不是说谎了。你能否帮她验证一下?

输入:样例输入:
输入三个整数 a,b,s10 15 25
输出:样例输出:
如果Bob可以用s步到达输出Yes,否则输出NoYes

个人思路:

  起点是(0,0),终点是(a,b),那么可以得到最少的步数即a+b,那么s是不应该不小于a+b的。

  Bob在到达终点前是随机走,所以如果走错了,一定会返回。即如果a+b是奇数,那么s一定是奇数。

  坐标系有正有负,在计算最少步数的时候要取绝对值。

个人解法:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		int a,b,s;
		int mininum,flag;
		Scanner sc = new Scanner(System.in);
		a = sc.nextInt();
		b = sc.nextInt();
		s = sc.nextInt();
		mininum = Math.abs(a) + Math.abs(b);
		if(s >= mininum) {
			if(s % 2 == mininum % 2){
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}
		} else {
			System.out.println("No");
		}
	}
}
阅读更多

没有更多推荐了,返回首页