Uva1368 DNA Consensus String

来源:互联网 发布:黑客 网站 找到数据库 编辑:程序博客网 时间:2024/06/05 07:50

题目链接:Uva1368-DNA Consensus String

题目大意: 输入m个长度为n的DNA序列,构造一个DNA序列,使得这个DNA序列与m个DNA序列的Hamming距离之和最小。若有多个解,输出字典序最小的解。


import java.util.*;public class Main {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] ACGT=new int[4];char[][] seq=null;char[] ans=null;int t,m,n;int sum;Scanner in=new Scanner(System.in);t=in.nextInt();while((t--)!=0){m=in.nextInt();n=in.nextInt();seq=new char[m][n];ans=new char[n];String temp=new String();for(int i=0;i<m;i++){temp=in.next();seq[i]=temp.toCharArray();}sum=0;for(int i=0;i<n;i++){   Arrays.fill(ACGT, 0);for(int j=0;j<m;j++){if(seq[j][i]=='A')ACGT[0]++;if(seq[j][i]=='C')ACGT[1]++;if(seq[j][i]=='G')ACGT[2]++;if(seq[j][i]=='T')ACGT[3]++;}int max=ACGT[0];int index=0;for(int k=0;k<4;k++)if(ACGT[k]>max){max=ACGT[k];index=k;}for(int k=0;k<4;k++)if(k!=index){sum=sum+ACGT[k];}if(index==0)ans[i]='A';if(index==1)ans[i]='C';if(index==2)ans[i]='G';if(index==3)ans[i]='T';}System.out.println(ans);System.out.println(sum);}}}


原创粉丝点击