刚开始想复杂了,后面看下别的人写的没有那么麻烦,直接放桶里面,排序之后乘就可以了
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int n,sum,a[27],k; char str[10005]; int main(){ while(scanf("%d",&n)!=EOF){ while(n--){ scanf("%s",str); sum=0,k=26; memset(a,0,sizeof(a)); for(int i=0;str[i]!=0;i++){ if(str[i]>='a'&&str[i]<='z'){ a[str[i]-'a']++; }else{ a[str[i]-'A']++; } } sort(a,a+26); for(int i=25;i>=0;i--){ sum+=a[i]*k--; } printf("%d\n",sum); } } return 0; }