题目描述:
描述 | |
---|---|
知识点 | 字符串 |
运行时间限制 | 0M |
内存限制 | 0 |
输入 | 整数N,后续N个名字 N个字符串,每个表示一个名字 |
输出 | 每个名称可能的最大漂亮程度 |
样例输入 | 2 zhangsan lisi |
样例输出 | 192 101 |
#include <iostream>
#include <string>
#include <stdlib.h>
#include <vector>
using namespace std;
int main()
{
int i = 0,nNumbers = 0;
char szName[100] = {0};
int nNameLens = 0;
int nSum = 0;
int data[26] = {0};
int j = 0,k = 0,nTemp = 0;
cin >> nNumbers;
while(nNumbers--)
{
cin >> szName;
nSum = 0;
nNameLens = strlen(szName);
for(i = 0; i < nNameLens; i++)
{
/* 大写字母转换为小写字母 */
if(szName[i] >= 'A' && szName[i] <= 'Z')
{
szName[i] = szName[i] + 32;
}
data[szName[i] - 'a']++;
}
/*对数组从大到小排序,采用冒泡排序*/
for(j = 0;j < 25; j++)
{
for(k = j+1; k < 26; k++)
{
if(data[k] > data[j])
{
nTemp = data[k];
data[k] = data[j];
data[j] = nTemp;
}
}
}
for(i = 0; i < 26; i++)
{
if(data[i] == 0)
{
break;
}
nSum = nSum + (26-i)*data[i];
/* 清空这个数组 */
data[i] = 0;
}
cout << nSum << endl;;
}
return 0;
}