爱奇艺2020届Java后端开发笔试编程题第二题

有ABC三个角色 然后一个袋子里有红球和篮球。ABC按顺序去里面随机拿一个颜色的球, A拿到红球才算A获胜, B拿红球的话B就获胜, C是打酱油干扰的拿红球或者篮球都不影响结果。
输入3 4( 第一个数是红球,第二个数是篮球), 题目要求求A获胜的几率
输出 0.62857

笔试过后我才把答案AC出来, 很可惜去不了老东家了 初步代码如下(没有处理精度转换,但是问题不大)
import java.util.*;
public class Main {
    private static Double tp = 0.0;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Double red = sc.nextDouble();
        Double blue = sc.nextDouble();
        Double sum = red + blue;
        Double totalP = 1.0;
        helper(sum, totalP, red, blue, 0, 3, false);
        System.out.println(tp);

    }
//  这道题只有当A拿到红色的时候 flag 才会等于true.
    public static void helper(double sum,  double totalP, double red, double blue, int role, int sequence, boolean flag) {
        if(flag) {
            tp += totalP;
            return ;
        }
        if(role % 3 == 0 ) {
            // 只有A选择红球 直接获胜
            double temp = totalP;
            if(red > 0) {
                helper(sum - 1, temp * red / sum, red - 1, blue, role + 1, sequence, true);
            }
            // 蓝球 继续跑
            if (blue > 0) {
                helper(sum - 1, temp * blue / sum, red, blue - 1, role + 1, sequence, false);
            }

        } else if( role % 3 == 1){
            //对于B角色而言只要考虑他选择蓝色的球继续循环的情况,因为红球则终止。
            if( blue > 0) {
                helper(sum - 1,  totalP * blue / sum,  red, blue - 1, role + 1, sequence, false);
            }
        } else if( role % 3 == 2) {
            double temp = totalP;
            //对于C而言 蓝球和红球都要考虑
            if( red > 0) {
                helper(sum - 1, temp *=  (red/sum), red - 1, blue, role + 1, sequence, false);
            }
            double temp2 = totalP;
            if(blue > 0 ) {
                helper(sum - 1, temp2 *= (blue/ sum), red, blue - 1, role + 1, sequence, false);
            }
        }
    }
}




#爱奇艺##笔试题目#
全部评论
你不是***去了吗,结束了?
点赞 回复 分享
发布于 2019-09-08 21:00
就是因为对于角色C复用了totalP变量导致没有AC 哭了
点赞 回复 分享
发布于 2019-09-08 20:59

相关推荐

04-25 18:13
五邑大学 Java
后来123321:大二两段实习太厉害了,我现在大二连面试都没有
点赞 评论 收藏
分享
评论
2
16
分享

创作者周榜

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