题解:P15606 [ICPC 2021 Jakarta R] Uniform Maker
可以找出字符串中每个位置出现次数最多的字符,再尝试把其它字符都改成它,最后把改动次数加起来就行了。
#include<bits/stdc++.h>
using namespace std;
int c[128];//该变量统计字符出现次数。
string flag[101];//该变量记录每个字符串。
int main(){
int n,m;//该变量对应题目。
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>flag[i];
}//输入。
int sum=0;//该变量对应改动次数。
for(int j=0;j<m;j++){
int maxn=0,p;//该变量记录出现次数最多的字符。
for(int i=1;i<=n;i++){
c[flag[i][j]]++;
if(maxn<c[flag[i][j]])maxn=c[flag[i][j]],p=flag[i][j];
}//查找每个位置出现次数最多的字符并记录。
for(int i=1;i<=n;i++){
if(p!=flag[i][j])sum++;
}//判断是否需要改动,更改改动次数。
memset(c,0,sizeof(c));//清空数组,准备下一次查找。
}
cout<<sum;
return 0;
}