算法竞赛入门经典java版程序CH3 UVa1368

本文介绍了一个用于解决UVa1368问题的Java程序,该程序能够处理多个基因序列,并通过统计每种碱基(A, C, G, T)出现的频率来确定最可能的基因序列及其变异数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


package ch3.uva1368;

import java.util.*;

//UVa1368
class Main {
	
	public static char[] gene={'A','C','G','T'};
	
	public static void print(int[][] arr){
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		int T, m, n;
		Scanner cin = new Scanner(System.in);
		T = cin.nextInt();
		while (T-- > 0) {
			m = cin.nextInt();//行
			n = cin.nextInt();//字串长
			cin.nextLine();//
			//System.out.println("m="+m+" n="+n);
			int[][] arr=new int[4][n];//A,C,G,T		
			int[] count=new int[n];//存值 
			while(m-->0){
			    String line=cin.nextLine();	
			    //System.out.println(line);
			    for(int i=0;i<line.length();i++){
			    	char c=line.charAt(i);
			    	if(c=='A'){
			    		arr[0][i]+=1;
			    	}else if(c=='C'){
			    		arr[1][i]+=1;
			    	}else if(c=='G'){
			    		arr[2][i]+=1;
			    	}else{
			    		arr[3][i]+=1;
			    	}
			    }			  
			}	
			//print(arr);
			int sum=0;
			for(int i=0;i<n;i++){
				int max=-1;
				int index=0;
				for(int j=0;j<4;j++){
				    if(max<arr[j][i]&&arr[j][i]!=0){
				    	max=arr[j][i];
				    	index=j;
				    }
				}
				for(int k=0;k<4;k++){					
					if(k!=index&&arr[k][i]!=0){
					  count[i]=count[i]+arr[k][i];
					}
				}
				System.out.print(gene[index]);
				sum=sum+count[i];
			}
			System.out.println("");
			System.out.println(sum);
		}
	}
}

/*

3
5 8
TATGATAC
TAAGCTAC
AAAGATCC
TGAGATAC
TAAGATGT
4 10
ACGTACGTAC
CCGTACGTAG
GCGTACGTAT
TCGTACGTAA
6 10
ATGTTACCAT
AAGTTACGAT
AACAAAGCAA
AAGTTACCTT
AAGTTACCAA
TACTTACCAA


Sample Output
TAAGATAC
7
ACGTACGTAA
6
AAGTTACCAA
12



 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值