给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
输入例子:
2 zhangsan lisi
输出例子:
192101
#include <iostream> #include <string.h> using namespace std; int main() { int n; while (cin >> n)//输入几个名字 { while (n--)//循环n次 { string str; cin >> str; int count[26] = { 0 }; for (int i = 0; i < str.length(); i++)//算出每个字母出现的次数 { if (str[i] >= 'A'&&str[i] <= 'Z') count[str[i] + 32 - 'a']++; else count[str[i] - 'a']++; } int temp; for (int j = 0; j < 25; j++)//将数组count由大到小排列 { for (int k = 25; k > j; k--) { if (count[k - 1] < count[k]) { temp = count[k]; count[k] = count[k - 1]; count[k - 1] = temp; } } } int num = 26, sum = 0; for (int i = 0; i < 26; i++) { sum += count[i] * num; num--; } cout << sum << endl; } } return 0; }