#include<iostream>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
bool cmp(pair<int ,int> a,pair<int, int> b){
return a.second < b.second;
}
int main(){
int m, n;
cin >> m >> n;
char DNA[m][n];
pair<int,int> count[m];
// 求Hamming距离
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
cin >> DNA[i][j];
for(int i = 0; i < m; i++){
count[i].first = i;
for(int j = 0; j < n; j++){
for(int k = 0; k < m; k++){
if(DNA[i][j] != DNA[k][j]) count[i].second++;
}
}
}
// 对Hamming距离排序
sort(count,count+m,cmp);
int sign = 0;
for(int i = 1; i < m; i++){
if(count[i].second != count[sign].second) {
sign = i;
break;
}
}
// 找到字典序最小解
int p = 0,q = 0,j = 0;
for(int k = 0; k < sign; k++){
j = count[k].first;
if(strcmp(DNA[p],DNA[j]) > 0) {
p = j;
q = k;
}
}
for(int j = 0; j < n; j++)
cout << DNA[p][j] ;
cout << ' ' << count[q].second << endl;
return 0;
}
刚做完 欢迎选作参考。