本以为他会要求最后不要空行,结果最后要空行,output真的看不出来有没有空行。。。
#include<bits/stdc++.h>
using namespace std;
struct AGCT{
char C;
int num=0;
};
AGCT agct[5];
int main(){
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
agct[0].C='A';
agct[1].C='G';
agct[2].C='C';
agct[3].C='T';
agct[4].C='A'-1;
int m,n,T,F;
cin>>T;
F=T;
while(T--){
cin>>m>>n;
//cout<<m<<n<<endl;
getchar();
string str[m],str2;
for(int i=0;i<m;i++){//读取
getline(cin,str[i]);//getline是包含换行符的,所以不用多读char
//getchar();
}
int sum=0;
for(int j=0;j<n;j++){//运算
agct[4].C='A'-1;
agct[0].num=0;
agct[1].num=0;
agct[2].num=0;
agct[3].num=0;
agct[4].num=0;
for(int i=0;i<m;i++){
if(str[i][j]=='A'){
agct[0].num++;
if(agct[0].num>agct[4].num){
agct[4].num=agct[0].num;
agct[4].C=agct[0].C;
}
else if(agct[0].num==agct[4].num){
if(agct[4].C>agct[0].C)
agct[4].C=agct[0].C;
}
}
if(str[i][j]=='G'){
agct[1].num++;
if(agct[1].num>agct[4].num){
agct[4].num=agct[1].num;
agct[4].C=agct[1].C;
}
else if(agct[1].num==agct[4].num){
if(agct[4].C>agct[1].C)
agct[4].C=agct[1].C;
}
}
if(str[i][j]=='C'){
agct[2].num++;
if(agct[2].num>agct[4].num){
agct[4].num=agct[2].num;
agct[4].C=agct[2].C;
}
else if(agct[2].num==agct[4].num){
if(agct[4].C>agct[2].C)
agct[4].C=agct[2].C;
}
}
if(str[i][j]=='T'){
agct[3].num++;
if(agct[3].num>agct[4].num){
agct[4].num=agct[3].num;
agct[4].C=agct[3].C;
}
else if(agct[3].num==agct[4].num){
if(agct[4].C>agct[3].C)
agct[4].C=agct[3].C;
}
}
//cout<<agct[4].C<<"每次更新结果"<<agct[4].num<<endl;
}
for(int i=0;i<m;i++){
if(agct[4].C!=str[i][j])
sum++;
}
//cout<<agct[4].C<<"每列最多"<<endl;
str2=str2+agct[4].C;
}
cout<<str2<<endl;
cout<<sum<<endl;
}
return 0;
}