描述
给出一个名字,该名字有26个字符组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
本题含有多组数据。
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
输入:
2 zhangsan lisi
输出:
192 101
代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n;
while (cin>>n){
vector <string> names;
for (int i=0;i<n;i++){
string name;
cin>>name;
names.push_back(name);
}
for (int i=0;i<names.size();i++){
int beauty;
vector <int> alpha(26);
for(int j=0;j<names[i].length();j++){
alpha[names[i][j]-'a']++;
}
//漂亮度最大化:
//=most frequent alpha*largest constant
sort(alpha.begin(),alpha.end());
int b=26;
int count=0;
for(int i=alpha.size()-1;i>=0;i--){
count+=alpha[i]*b;
b--;
}
cout<<count<<endl;
}
}
}