这道题不算是太难,就是对输入的字符串相同位进行操作,看相同位上哪个字符的字母最多,找出最多的字母存入要输出的字符串中
算是字符数组与数字数组的结合
#include<iostream>
#include<string>
using namespace std;
int main(){
int m;
cin>>m;
for(int i=0;i<m;i++){
char A[60][1010];
char res[1010];
int p,q;
cin>>p>>q;
for(int j=0;j<p;j++){//j表示行
for(int k=0;k<q;k++){//k表示列
cin>>A[j][k];
}
}
int sum=0;
for(int k=0;k<q;k++){
int a[4]={0};
for(int j=0;j<p;j++){
switch(A[j][k]){
case 'A': a[0]++;break;
case 'C': a[1]++;break;
case 'G': a[2]++;break;
case 'T': a[3]++;break;
}
}
int maxn=0;
int imax;
for(int l=3;l>=0;l--){
if(a[l]>=maxn){
maxn=a[l];
imax=l;
}
}
sum=sum+p-maxn;
switch(imax){
case 0: res[k]='A';break;
case 1: res[k]='C';break;
case 2: res[k]='G';break;
case 3: res[k]='T';break;
}
}
//res[i]='\0';
for(int i=0;i<q;i++){
cout<<res[i];
}
cout<<endl;
cout<<sum<<endl;
}
}