思路:
首先建一个二维数组用来存储五个字符串,判断相同下标的值,求出最大的值,赋值给s,统计出出现最频繁的次数,然后总数减去他就是出现较少的总数。
package smail;
import java.util.Scanner;
public class UVA1368 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while(T--!=0) {
int sum = 0;
int x = in.nextInt(),y = in.nextInt();
in.nextLine();
char[][] c =new char[x][y];
for(int i = 0;i<x;i++) {
String s = in.nextLine();
if(s.length()==y)
for(int j = 0;j<y;j++) {
c[i][j]=s.charAt(j);
}
}
String s = "";
for(int i = 0;i<y;i++) {
int[] ans = new int[4];
for(int j = 0;j<x;j++) {
if(c[j][i]=='A')
ans[0]++;
if(c[j][i]=='C')
ans[1]++;
if(c[j][i]=='G')
ans[2]++;
if(c[j][i]=='T')
ans[3]++;
int max =0,sum1 = 0;;
char a ='0';
for(int j1 =0;j1<ans.length;j1++) {
if(ans[j1]>max) {
max = ans[j1];
sum1 = ans[j1];
if(j1==0)
a = 'A';
if(j1==1)
a = 'C';
if(j1==2)
a ='G';
if(j1==3)
a ='T';
}
else if(ans[j1]==max) {
sum1 = max;
}
}
sum +=sum1;
s += a;
}
System.out.println(s);
System.out.println(x*y-sum);
}
}
}}