题解 | #机器人跳跃问题#

机器人跳跃问题

https://www.nowcoder.com/practice/7037a3d57bbd4336856b8e16a9cafd71

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        while(in.hasNext()){
            solution1(in);
            // solution2(in);
        }
    }

    /**
     * 模拟法: 数学公式倒推
     * 三种情形 可合为一
     */
    private static void solution1(Scanner in){
        int N = in.nextInt();
        int[] H = new int[N+1];
        int[] E = new int[N+1];

        for(int i=1; i<=N; i++){
            H[i] = in.nextInt();
        }

        for(int i=N; i>0; i--){
            // E[i]<H[i] => E[i-1]<H[i], E[i-1]-(H[i]-E[i-1])=E[i] => E[i-1] = Math.ceil((E[i]+H[i])/2)
            // E[i]>H[i] => E[i-1]>H[i], E[i-1]+(E[i-1]-H[i])=E[i] => E[i-1] = Math.ceil((E[i]+H[i])/2)
            // E[i]=H[i] => E[i-1]=H[i], E[i-1]=E[i] => 2E[i-1]=E[i]+H[i] => E[i-1] = Math.ceil((E[i]+H[i])/2)
            E[i-1] = (int) Math.ceil((E[i]+H[i])/2.0);
        }

        System.out.println(E[0]);
    }
    

    /**
     * 模拟法: 数学公式倒推
     */
    private static void solution2(Scanner in){
        int N = in.nextInt();
        int[] H = new int[N+1];
        int[] E = new int[N+1];

        for(int i=1; i<=N; i++){
            H[i] = in.nextInt();
        }

        // E[N-1] = (int) Math.ceil(H[N]/2.0) -> 可合并
        for(int i=N; i>0; i--){
            // E[i]<H[i] => E[i-1]<H[i], E[i-1]-(H[i]-E[i-1])=E[i] => E[i-1] = Math.ceil((E[i]+H[i])/2)
            if(E[i] < H[i]){
                E[i-1] = (int) Math.ceil((E[i]+H[i])/2.0);
            }
            // E[i]>H[i] => E[i-1]>H[i], E[i-1]+(E[i-1]-H[i])=E[i] => E[i-1] = Math.ceil((E[i]+H[i])/2)
            else if(E[i] > H[i]){
                E[i-1] = (int) Math.ceil((E[i]+H[i])/2.0);
            }else{
                E[i-1] = H[i];
            }
        }

        System.out.println(E[0]);
    }
}

全部评论

相关推荐

01-11 08:47
门头沟学院 Java
choumoduji...:读研的目的就是为了以最快的速度和最低的要求完成“学校”规定的毕业标准,而不是所谓课题组的要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务