题目描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
示例1
输入
2 zhangsan lisi
输出
192 101
C++
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
static bool cmp(int& a,int& b)
{
return a>b;
}
int main()
{
int N;
while(cin>>N)
{
vector<string> names(N);
for(int i=0;i<N;i++)
{
cin>>names[i];
}
for(int i=0;i<N;i++)
{
map<char,int> tmp;
for(auto c:names[i])
{
tmp[c]++;
}
vector<int> vec;
for(auto it:tmp)
{
vec.push_back(it.second);
}
sort(vec.begin(),vec.end(),cmp);
int res=0;
int num=26;
for(auto it:vec)
{
res+=num*it;
num--;
}
cout<<res<<endl;
}
}
return 0;
}