题解:P15606 [ICPC 2021 Jakarta R] Uniform Maker

· · 题解

思路:

比较简单的一道题,可以找输入的每个单词中每个位置出现字符最多的字符,组成一个新单词,然后记录每个单词和新单词不同的字符数量的总和,最后输出总和即可。

代码:

#include<bits/stdc++.h> 
using namespace std;
int n,M;
int main(){
    cin>>n>>M;
    vector<string>ar;
    for(int i=1;i<=n;i++){
        string cun;
        cin>>cun;
        ar.push_back(cun);
    }
    string mubiao="";
    for(int i=1;i<=M;i++){
        map<char,int>m;
        for(int k=0;k<n;k++){
            char z=ar[k][i-1];
            m[z]++;
        }
        int mxs=-999;
        char mxf;
        for(auto it:m){
            if(it.second>mxs){
                mxf=it.first;
                mxs=it.second;
            }
        }
        mubiao+=mxf;
    }    
    int cnt=0;
    for(int i=0;i<ar.size();i++){
        for(int j=0;j<ar[i].size();j++){
            if(ar[i][j]!=mubiao[j]){
                cnt++;
            }
        }
    }
    cout<<cnt;
    return 0; 
}