360笔试代码题2AC

第一题很简单,找到规律一把过(题目图片来自网友“七少”供图)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String first = sc.nextLine();
        String end = sc.nextLine();
        sc.close();
        int len = first.length();
        int aNum = 0, tNum = 0;
        for (int i = 0; i < len; i++) {
            if(first.charAt(i) != end.charAt(i)){
                if(first.charAt(i) == 'A') aNum++;
                else tNum++;
            }
        }
        if(aNum > tNum) System.out.println(aNum);
        else System.out.println(tNum);
    }
}
第二题刚开始用递归,优化到死还是0.45--0.55。然后发现这tm是概率论(题目图片来自网友“七少”供图)
import java.util.Scanner;

public class Mian2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        sc.close();
        double res = get(n, m);
        System.out.println(String.format("%.4f", res));
    }

    private static double get(int n, int m) {
        double[][] nums = new double[n + 1][m + 1];
        for (int i = 0; i < nums.length; i++) {
            nums[i][0] = 1.0;
        }
        for (int i = 1; i < nums.length; i++) {
            for (int j = 1; j < nums[0].length; j++) {
                nums[i][j] = nums[i][j] + (double) i / (i + j);
                double jm = (double) j;
                double in = (double) i;
                if(j > 1){
                    nums[i][j] = nums[i][j] + (jm / (in + jm)) * ((jm - 1) / (in + jm - 1)) * (in / (in + jm - 2)) * nums[i - 1][j - 2];
                }
                if(j > 2){
                    nums[i][j] = nums[i][j] + (jm / (in + jm)) * ((jm - 1) / (in + jm - 1)) * (jm - 2) / (in + jm - 2) * nums[i][j - 3];
                }
            }
        }
        return nums[n][m];
    }
}
最初始的递归解法:
private static double get1(double n, double m) {
    if(n <= 0) return 0.0;
    if(m <= 0) return 1.0;
    double curr = n / (n + m);
    if(m >= 3.0) {
        return curr +
            (1.0 - curr) * ((m - 1.0) / (n + m - 1.0)) *
            (((m - 2.0) / (n + m - 2.0)) * get(n, m - 3) + (n / (n + m - 2.0)) * get(n - 1, m - 2));
    }else if(m == 2.0) return curr;
    else if(m == 1.0) return curr + (1.0 - curr) * (m - 1) / (n + m - 1) * get(n - 1.0, m - 2.0);

    return 0.0;
}
最后,请大家好好做选择题,这把不考代码,考选择填空
#360笔试##笔试题目##360公司#
全部评论
第一题一模一样的思路,python只能过9%,哭了…
2 回复
分享
发布于 2020-03-24 22:41
把俩个不同的字符找出来,然后它的长度减去AT的对数
1 回复
分享
发布于 2020-03-24 22:13
百信银行
校招火热招聘中
官网直投
第二题可能用例有问题,我纯用递归也没错误。。。。
1 回复
分享
发布于 2020-03-25 09:54
牛啊
点赞 回复
分享
发布于 2020-03-24 22:00
围观大佬
点赞 回复
分享
发布于 2020-03-24 22:09
所以第一题就是看A和T哪个数量多?就输出哪个?枯了,我写了好久的交换和替换。。。
点赞 回复
分享
发布于 2020-03-24 22:11
第二个题90%不知道差在哪里
点赞 回复
分享
发布于 2020-03-24 22:13
第二题写的太长了呀
点赞 回复
分享
发布于 2020-03-24 22:14
我也a了两道,最后一道用的递归不过要超时,需要加两个记忆化搜索。。。话说楼主最后一句话是什么意思???
点赞 回复
分享
发布于 2020-03-24 22:14
大佬
点赞 回复
分享
发布于 2020-03-24 22:16
碰到概率题,就玩球
点赞 回复
分享
发布于 2020-03-24 22:38
第一题思路一样,就是只能ac9
点赞 回复
分享
发布于 2020-03-24 22:42
第二题只要求保留4位小数,递归到一定程度就可以中止了
点赞 回复
分享
发布于 2020-03-24 23:26
 第一题一共四种组合把t-a,a-t,a-a,t-t,相同的不管,不同的看a-t和t-a最少的那个就是可以交换的,剩下的就是需要替换的吧
点赞 回复
分享
发布于 2020-03-25 10:13
不错,校招也可以参加阿里云的呢 联系邮箱:pengming.pmq@alibaba-inc.com ,图示二维码招聘交流群
点赞 回复
分享
发布于 2020-03-25 14:06
nums[n][m]代表n个中奖m个不中奖的胜率吗?请问状态转移方程的思路?没太弄明白😂
点赞 回复
分享
发布于 2020-04-05 11:45

相关推荐

头像
B站 运营岗 普通Offer是12-15k*15-18,SP的Offer月薪16-17k*15,SSP的offer月薪是20k*15,综合年总包区间在18-30W。
点赞 评论 收藏
转发
是我的错觉吗,感觉比中行难好多
投递中国农业银行等公司10个岗位 >
点赞 评论 收藏
转发
11 70 评论
分享
牛客网
牛客企业服务