招银卡中心-团建活动-java

2017-09-13  本文已影响0人  Jacinth

import java.util.Scanner;

/*解题思路:
 * A获得人数的身高就加,B获得人数的身高就减,最后看结果是否大于0。
 * 定义dp[i]为 A - B的差, 最后判断dp[n] > 0即可。*/

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();// 同事数量
        int[] colls = new int[m];// 同事身高数组
        for (int i = 0; i < m; ++i) {
            colls[i] = sc.nextInt();
        }

        int score = winner(colls, 0, 1);
        if (score > 0) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
        sc.close();
    }

    public static final int winner(int[] nums, int s, int turn) {
        if (s > nums.length - 1) {
            return 0;
        }
        if (s == nums.length - 1) {
            return turn * nums[s];
        }
        int a = turn * (nums[s]) + winner(nums, s + 1, -turn);
        int b = turn * (nums[s] + nums[s + 1]) + winner(nums, s + 2, -turn);
        return turn * Math.max(turn * a, turn * b);
    }
}

这题直接输出“true”,测试用例60%。

上一篇下一篇

猜你喜欢

热点阅读