描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。
知识点
字符串
运行时间限制
0M
内存限制
0
输入
整数N,后续N个名字
N个字符串,每个表示一个名字
输出
每个名称可能的最大漂亮程度
样例输入
2 zhangsan lisi
样例输出
192 101
#include
#include
#include
#include
int funBeauty(char c_name[128])
{
int n;
int i_strLen;
int j;
int i_charNum[26];
for(j = 0; j < 26; j++)
{
i_charNum[j] = 0;
}
i_strLen = strlen(c_name);
for(n = 0; n < i_strLen; n++)
{
int i_asciiCode;
char c_lowerChar;
c_lowerChar = tolower(c_name[n]);
i_charNum[c_lowerChar-97]++;
}
int m;
int k;
for(k=0;k<26;k++)
{
for(m=0;m<25-k;m++)
{
int i_sTemp;
if(i_charNum[m] > i_charNum[m+1])
{
i_sTemp = i_charNum[m];
i_charNum[m] = i_charNum[m+1];
i_charNum[m+1] = i_sTemp;
}
}
}
int i_Temp;
int i_Degree;
i_Degree = 0;
for(i_Temp=0;i_Temp<26;i_Temp++)
{
i_charNum[i_Temp] = i_charNum[i_Temp]*(i_Temp+1);
i_Degree = i_Degree + i_charNum[i_Temp];
}
return i_Degree;
}
int main()
{
char c_countNum[128];
int i_countNum;
gets(c_countNum);
i_countNum = atoi(c_countNum);
char c_countName[128][128];
int i;
for(i = 0; i < i_countNum; i++)
{
gets(c_countName[i]);
}
int a;
for(a = 0; a < i_countNum; a++)
{
int i_Beauty;
i_Beauty = funBeauty(c_countName[a]);
printf("%d ",i_Beauty);
}
getchar();
}