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 ' ';


}





}

最新文章

  1. 用Kotlin开发Android应用(I):介绍
  2. mysql配置远程连接方法之一(改表法)
  3. iscroll.js的使用
  4. eclipse启动报错eclipse failed to create the java virutal machine
  5. GL_Oracle Erp常用的报表(汇总)
  6. cf B. I.O.U.
  7. Android设置输入框和软键盘动态悬浮
  8. JavaSE复习日记 : 接口
  9. python类与对象基本语法
  10. 【转】IO流程
  11. MOOS学习笔记——多线程
  12. Selenium&#183;自动化框架集成
  13. eclipse+tomcat测试连接时候HTTP Status 404错误
  14. pos提交提交数据时碰到Django csrf
  15. LdA笔记
  16. ABP实战--修改语言配置XML至Json
  17. 虚拟IP和IP漂移
  18. ipconfig命令一览
  19. ObjectId
  20. Android TabHost控件 右侧留空并增加按钮

热门文章

  1. Object Destructuring Assignment vs Object.assign
  2. flutter &amp; i18n &amp; L10n &amp; json
  3. React LifeCycle Methods &amp; re-learning 2019
  4. c++ DWORD和uintptr_t
  5. Puppeteer: 鼠标移动
  6. C# NOPI 项目实战(经典)(可下载项目源码)
  7. 小记一下递归通过id寻找一条链路的数据
  8. 模拟web服务器 (小项目) 搭建+部署
  9. Mybites逆向工程的搭建
  10. CSS 书写禅机