题意:
1、查找每行的元素出现的对多次,即为频率最高,且相似最大
2、每个位置没出现的次数。
下面上代码:
#include<cstdio>
#include<cstring>
int N, M;
char DNA[55][1010];
int List[5];
void solve(){
int ans = 0;
for(int i = 0 ; i < N; ++i){
memset(List, 0, sizeof(List));
int num = 0, temp = 0, target = 0;
for(int j = 0 ; j < M; ++j){
if(DNA[j][i] == 'A') List[0]++;
else if(DNA[j][i] == 'C') List[1]++;
else if(DNA[j][i] == 'G') List[2]++;
else List[3]++;
}
for(int k = 0; k < 4; ++k){
if(List[k] > temp){
target = k;
temp = List[k];
num = M - List[k];
}
}
ans += num;
if(target == 0) printf("A");
else if(target == 1) printf("C");
else if(target == 2) printf("G");
else printf("T");
}
printf("\n%d\n", ans);
}
int main(){
int T;
scanf("%d", &T);
while(T--){
scanf("%d%d", &M, &N);
for(int i = 0; i < M; ++i){
scanf("%s", DNA[i]);
}
solve();
}
return 0;
}