京东笔试--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);
    }
}

输出结果

原文地址:https://www.cnblogs.com/sinlearn/p/13453224.html