51nod 1182 完美字符串

来源:互联网 发布:mac winebottler msi 编辑:程序博客网 时间:2024/05/17 00:05

这道题思想很简单就是贪心,不过其中遇到比较重要的地方是用到了map的排序(定义一个vector存放map,然后对vector排序),所以做个笔记好让自己回来复习。

#include<cstring>#include<string>#include<cstdio>#include<map>#include<algorithm>#include<vector>#include<iostream>using namespace std;string s;map<char,int> m;typedef pair<char,int> PAIR;///先定义一个pairint ans,t;struct compare{///结构体重写比较函数    bool operator()(const PAIR& lhs,const PAIR& rhs){        return lhs.second>rhs.second;    }};int main(){    s.resize(10000);    while(scanf("%s",&s[0])!=EOF){    m.clear();    ans=0;    t=26;    for(int i=0;i<s.length();i++){        if(s[i]>='a')        m[s[i]]++;        else if(s[i]>='A')        m[s[i]+32]++;    }    vector<PAIR> str(m.begin(),m.end());///vector的快速初始化方式,学习了    sort(str.begin(),str.end(),compare());    for(int i=0;i<str.size();i++){        ans=ans+str[i].second*t--;    }    printf("%d\n",ans);    str.clear();    s.clear();    s.resize(10000);    }    return 0;}


原创粉丝点击