做题思路
对于每一个字符串的每一列,统计出现次数最多的字符。
做题方法
使用了两个二元组来表示字符串和字符的数量,分别表示第m行的字符串,和第n列的字符数量,最后再对m个字符串进行遍历,统计不同字符的个数。
因为是英文题目,自己对题意看的不透彻,题目输入的字符串只包含四个字符,我理解成了26个英文字母都存在,看来英文水平还需要继续提高。
代码
#include<iostream>
#include<cstring>
#include<cmath>
#define MAX_N 1005
int main()
{
int T;
scanf("%d",&T);
while(T--){
int m,n;
int cnt[MAX_N][26];
char ch[55][MAX_N];
char sum[MAX_N];
for(int i=0;i<MAX_N;i++){
for(int j=0;j<26;j++){
cnt[i][j]=0;
}
}
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++){
scanf("%s",&ch[i]);
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cnt[j][ch[i][j]-'A']++;
}
}
for(int i=0;i<n;i++){
int max=-1;
int ans=0;
for(int j=0;j<26;j++){
if(max<cnt[i][j]){
max=cnt[i][j];
ans=j;
}
sum[i]=ans+'A';
}
printf("%c",ans+'A');
}
printf("\n");
int sum_ans=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(sum[j]!=ch[i][j]) sum_ans++;
}
}
printf("%d\n",sum_ans);
}
return 0;
}
继续努力!