爱奇艺笔试第二题

public class S2 {
    public static void main(String[] args) {
        int n = 3;
        int m = 4;
        System.out.format("%.5f", cal(n, m));
    }

    private static double cal(int n, int m) {
        if (n >= 1 && m == 0) {
            return 1;
        }
        if (n <= 0 || m <= 0) {
            return 0;
        }
        double curr = n / (m + n + 0.0);
        double fail = allFail(n, m);
        double next1 = cal(n - 1, m - 2);
        double next0 = cal(n, m - 3);
        curr = curr + fail * (((m - 2) / (n + m - 2.0)) * next0 + (1 - (m - 2) / (n + m - 2.0)) * next1);
        return curr;
    }

    /**
     * A B 全部不胜利,可以进入下一轮
     */
    private static double allFail(int n, int m) {
        if (m < 2) {
            return 0;
        }
        return m / (n + m + 0.0) * (m - 1) / (n + m - 1.0);
    }
}

#爱奇艺##题解#
全部评论
大佬tql
点赞 回复 分享
发布于 2019-09-08 17:32
可以说一下思路吗 求解答
点赞 回复 分享
发布于 2019-09-08 17:35
这个思路我是知道的,可是我写不出这么漂亮的代码,
点赞 回复 分享
发布于 2019-09-08 17:36

相关推荐

秋国🐮🐴:拿到你简历编号然后让你知道世间险恶
点赞 评论 收藏
分享
评论
2
10
分享

创作者周榜

更多
牛客网
牛客企业服务