DNA序列(JAVA语言)
package 第三章习题;
/*
* 输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小。
* 两个等长字符串的Hamming距离等于字符不同的位置个数,
* 例如,ACGT和GCGA的Hamming距离为2(左数第1, 4个字符不同)。
输入整数m和n(4≤m≤50, 4≤n≤1000),
以及m个长度为n的DNA序列(只包含字母A,C,G,T),
输出到m个序列的Hamming距离和最小的DNA序列和对应的距离。
如有多解,要求为字典序最小的解。
例如,对于下面5个DNA序列,最优解为TAAGATAC。
TATGATAC
TAAGCTAC
AAAGATCC
TGAGATAC
TAAGATGT
*/
import java.util.*;
public class DNA序列 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int m=in.nextInt();
int n=in.nextInt();
String s[]=new String[m];
for(int i=0;i<m;i++) {
s[i]=in.next();
}
String str = "";
for(int i=0;i<n;i++)
{
int A=0,C=0,G=0,T=0;
for(int j=0;j<m;j++)
{
if(s[j].charAt(i)=='A')A++;
else if(s[j].charAt(i)=='C')C++;
else if(s[j].charAt(i)=='G')G++;
else if(s[j].charAt(i)=='T')T++;
}
str+=max(A,C,G,T);
}
System.out.println(str);
}
private static char max(int A, int C, int G, int T) {
// TODO Auto-generated method stub
int a[]=new int[4];
a[0]=A;
a[1]=C;
a[2]=G;
a[3]=T;
int max=a[0];
for(int i=1;i<4;i++) {
if(a[i]>max) {
max=a[i];
}
}
if(max==A) {
return 'A';
}
else if(max==C) {
return 'C';
}
else if(max==G) {
return 'G';
}
else if(max==T) {
return 'T';
}
return ' ';
}
}
最新文章
- 用Kotlin开发Android应用(I):介绍
- mysql配置远程连接方法之一(改表法)
- iscroll.js的使用
- eclipse启动报错eclipse failed to create the java virutal machine
- GL_Oracle Erp常用的报表(汇总)
- cf B. I.O.U.
- Android设置输入框和软键盘动态悬浮
- JavaSE复习日记 : 接口
- python类与对象基本语法
- 【转】IO流程
- MOOS学习笔记——多线程
- Selenium&#183;自动化框架集成
- eclipse+tomcat测试连接时候HTTP Status 404错误
- pos提交提交数据时碰到Django csrf
- LdA笔记
- ABP实战--修改语言配置XML至Json
- 虚拟IP和IP漂移
- ipconfig命令一览
- ObjectId
- Android TabHost控件 右侧留空并增加按钮
热门文章
- Object Destructuring Assignment vs Object.assign
- flutter &; i18n &; L10n &; json
- React LifeCycle Methods &; re-learning 2019
- c++ DWORD和uintptr_t
- Puppeteer: 鼠标移动
- C# NOPI 项目实战(经典)(可下载项目源码)
- 小记一下递归通过id寻找一条链路的数据
- 模拟web服务器 (小项目) 搭建+部署
- Mybites逆向工程的搭建
- CSS 书写禅机