最大映射

来源:互联网 发布:数据段 代码段堆栈段 编辑:程序博客网 时间:2024/05/29 00:33
#include<iostream>#include<string>#include<map>#include<vector>#include<algorithm>using namespace std;typedef pair<char, int> PAIR;map<char,int> getScore(string str,map<char,int> score){    int len = str.length();    int v = 1;    for(int i=len-1;i>=0;i--){        if(score.find(str[i])==score.end()){            score[str[i]] = v;        }        else{            score[str[i]] += v;        }        v = v*10;    }    return score;}int getNum(string str,map<char,int> score){    int v = 1;    int num = 0;    for(int i=str.length()-1;i>=0;i--){        num += score[str[i]]*v;        v *= 10;    }    return num;}int cmp(const PAIR& x, const PAIR& y)        {            return x.second < y.second;        }    int main(){    int n;    cin>>n;    string str1;    cin>>str1;    string str2;    cin>>str2;    map<char,int> score;    getScore(str1,score);    getScore(str2,score);    vector<PAIR> vec;        for (map<char,int>::iterator curr = score.begin(); curr != score.end(); ++curr)        {            vec.push_back(make_pair(curr->first, curr->second));        }        sort(vec.begin(),vec.end(),cmp);    int key = 9;    for(int i=0;i<vec.size();i++){        char c = vec[i].first;        score[c] = key;        key--;    }    cout<<getNum(str1,score)+getNum(str2,score);}
0 0
原创粉丝点击