think:
首先理解题目大意,有n行m列字符,要寻找一串字符,使得对于所有字符来说差异最小,还要计算差异的个数。
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
char s[1211][1211];//存储字符
char p[1212];//找到的差异最小的字符串
int a[12111][12111];//选找p
int main()
{
int T, n, m;
cin>>T;
while(T--)
{
cin>>n>>m;
getchar();
memset(a, 0, sizeof(a));
memset(p, 0, sizeof(p));
memset(s, 0, sizeof(s));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>s[i][j];
a[(int)s[i][j]][j]++;//第几列的字符有几个
}
}
for(int i=0;i<m;i++)
{
int max = 0;
char o;
for(int k='A';k<='Z';k++)
{
if(a[k][i]>max)
{
o = (char)k;
max = a[k][i];
}
}
p[i] = o;
}
cout<<p<<endl;//输出p
int sum = 0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]==p[j]);
else
sum++;
}
}
cout<<sum<<endl;//个数
}
return 0;
}