#include <stdio.h> #include<string.h> #include<ctype.h> //只需要让出现次数最多的字母对应26,次多的字母对应25....以此类推,即可以得到最大的答案 int main() { int N;//整数N,后续N个名字 char str[100000]; int length; int temp; int sum; while(scanf("%d\n",&N)!=EOF) { for(int n=1;n<=N;n++) { scanf("%s\n",str); length=strlen(str); sum=0; //统计每个字符的数量 初始化为0 int arr[26]={0}; //检测字符是什么 for(int i=0;i<length;i++) //我们只需要知道不同字符出现的次数,甚至都不需要知道次数对应的是什么字符; { //str[i]=toupper(str[i]); arr[str[i]-'a']++; //统计次数 } //冒泡 for(int i=0;i<26-1;i++) { for(int j=0;j<26-1-i;j++) { if(arr[j]<arr[j+1]) //从大到小排列 { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(int i=0;i<26;i++) { sum=sum+(arr[i]*(26-i)); //最多的*26,依次递减 } printf("%d\n",sum); } } return 0; }