名字的漂亮度=26*字母个数最多的个数+25*字母个数其次的个数+24*字母个数再其次的(忽略大小写)个数+….+1*出现次数最小的个数。
输入:整数N,N个字符串
输出:N个字符串漂亮度
例如:
输入1 a
输出 26
先求出每个字母出现的个数,然后对个数从大到小排序,再求出字符的漂亮度。
#include<iostream>
#include<string>
using namespace std;
int meili(string s){
int a[26] = { 0 };
int l = s.size(),pos;
int i, j,temp,len=0;
for (i = 0; i < l; i++){
if (isupper(s[i]))
pos = s[i] - 65;
else
pos = s[i] - 97;
a[pos]++;
}
for (i = 0; i < 25; i++){
for (j = 0; j < 25 - i; j++){
if (a[j] < a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; a[i] != 0&&i<26; i++)
len += (26 - i)*a[i];
return len;
}
void main(){
cout << "输入:"<<endl;
int n,i;
string s;
cin >> n;
int *len = new int[n];
for (i = 0; i < n; i++){
cin >> s;
len[i] = meili(s);
}
cout <<endl<< "输出:" << endl;
for (i = 0; i < n; i++)
cout << len[i] << endl;
system("pause");
}