360笔试题D卷

两个编程题全部ac了
前面的部分一个都不会,c语言没学过...
前面的题也太奇怪了!
还有行测题居然也出在一起了

第一题(我也不会,但是按照例子的做法就过了)
package _360;

import java.util.*;

public class Main {
    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String dna1 = in.nextLine();
        String dna2 = in.nextLine();
        int res = minEdit(new StringBuilder(dna1),new StringBuilder(dna2));
        System.out.println(res);
    }

    private static int minEdit(StringBuilder dna1, StringBuilder dna2) {
        int n = dna1.length();

        int cnt  = 0;

        for(int i = 0;i<n;i++){
            if(dna1.charAt(i)!=dna2.charAt(i)){
                char target = dna2.charAt(i);
                int pos = -1;
                for(int j = i+1;j<n;j++){
                    if(dna1.charAt(j)==target && dna1.charAt(j)!=dna2.charAt(j)){
                        pos = j;
                        break;
                    }
                }
                if(pos==-1){
                    //
                }
                else{
                    dna1.setCharAt(pos,dna1.charAt(i));
                }
                cnt++;
            }
        }


        return cnt;

    }


}

第二题(动态规划)
package _360;

import java.util.*;


public class Main2 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();//中奖
        int m = in.nextInt();//不中奖

        double[][] dp = new double[n+1][m+1];
        //dp[n][m] =
        //1 中了 n/(m+n);
        //                 (A抽了一张不中奖,剩下n张中奖,m-1张不中奖)  然后B也抽了一张不中奖
        //                        剩下n张中奖,m-2张不中奖.B可以随便摸
        //              B如果摸到中奖,则剩下n-1和m-2   B如果摸到不中奖,则剩下n和m-3
        //2 没中 m/(n+m) * (m-1)/(n+m-1)*  {  dp[n-1][m-2]  + dp[n][m-3]     }

        for(int i = 0;i<=n;i++){
            for(int j = 0;j<=m;j++){
                if(i==0 && j==0){
                    dp[i][j] = 0;//
                }
                else if(i==0){
                    dp[i][j] = 0;
                }
                else if(j==0){
                    dp[i][j] = 1;
                }
                else{
                    dp[i][j] = 1.0*i/(i+j) + 1.0*j/(i+j) * (j-1)/(i+j-1)* ( ( j-2>=0 ? 1.0*i/(i+j-2)*dp[i-1][j-2] : 0)  + ( j-3>=0 ? 1.0*(j-2)/(i+j-2)*dp[i][j-3] : 0 ));
                }
            }
        }

        System.out.printf("%.4f",dp[n][m]);

    }
}


#360公司##笔试题目#
全部评论
第一题,编辑DNA,楼主能帮忙看看哪里有问题吗,为啥我的只通过9%,我觉得结果应该和楼主一样啊,谢谢! def min_distance(word1, word2):     anum=0     tnum=0     for i in range(len(word1)):         if word1[i]!=word2[i]:             if(word1[i]=='A'):                 anum+=1             else:                 tnum+=1     return max(anum, tnum)
点赞 回复 分享
发布于 2020-03-24 23:19
问一下行测是啥意思啊,前面的那个逻辑题还是指专业那些选择题啊
点赞 回复 分享
发布于 2020-03-24 21:57
第二题 我暴力搜过去的  前面选择简直了 看代码看得 我以为我没有学过C语言orz 虽然我的确可能没有学过吧
点赞 回复 分享
发布于 2020-03-24 21:14

相关推荐

评论
5
13
分享

创作者周榜

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