zoukankan      html  css  js  c++  java
  • 京东笔试--X星人的基因

    题目描述:

    X星人的基因由A、B、C、D、E五种不同的结构组合而成。
    如果两个性别不同的X星人的基因序列相似度大于50%,按照X星的法律他们是禁止结婚的,等于50%据说还是可以的。
    那么基因的相似度怎么计算呢?分别从两个人身上取长度均为N的基因片段,如果它们的最长公共子序列
    (注意,最长公共子序列不需要连续)的长度为M,则相似度=M/N。是不是很简单呢?
    现在给你两段X星人的基因序列片段,请你判断他们是不是可以结婚?

    代码实现

    import java.util.Scanner;
    
    public class Testwaixingren {
        public static void main(String[] args) {
            long start = System.currentTimeMillis();
            int n;
            double t;
            System.out.println("请输入基因片段长度:");
            Scanner in = new Scanner(System.in);
            n = in.nextInt();
            System.out.println("请两个基因片段:");
            Scanner ins = new Scanner(System.in);
            String a = ins.nextLine();
            String b = ins.nextLine();
            int m = LCS(a,b,0,0);
            System.out.println(m);
            System.out.println(n);
            t = (double)m / (double)n ;
            System.out.println("基因相似度为:"+ 100*t +"%");
            long end = System.currentTimeMillis();
            System.out.println("耗时:"+ (end-start) + "s");
    
        }
        public static int LCS(String a, String b, int i, int j ){
            if(i>=a.length()||j>=a.length()) return 0;
            if(a.charAt(i)==b.charAt(j))
                return LCS(a,b,i+1,j+1)+1;
            else
                return LCS(a,b,i+1,j)>LCS(a,b,i,j+1)?LCS(a,b,i+1,j):LCS(a,b,i,j+1);
        }
    }
    
    

    输出结果

  • 相关阅读:
    [转载]苹果推送通知服务
    Lovekey
    大数阶乘的位数
    大明A+B
    大数取余
    A+Bcoming
    大数取余(C++)
    验证角谷猜想
    麦森数(转)
    大数阶乘的位数(C++)
  • 原文地址:https://www.cnblogs.com/sinlearn/p/13453224.html
Copyright © 2011-2022 走看看