时间:2016-05-10 09:54:57 星期二
题目编号:[2016-05-10][51nod][1182 完美字符串]
题目大意:
- 约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。
分析:
- 统计每个字母出现的次数,排序,然后相乘即可
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<algorithm>
using namespace std;
const int maxn = 1E4 + 10;
char str[maxn];int v[26];
int main(){
scanf("%s",str);
int sz = strlen(str),ans = 0;
memset(v,0,sizeof(v));
for(int i = 0 ; i < sz; ++i){
if(isupper(str[i])){
++v[str[i] - 'A'];
}else if(islower(str[i])){
++v[str[i] - 'a'];
}
}
sort(v,v+26);
for(int i = 25 ; i >= 0 ; --i){
ans += v[i] * (i+1);
}
printf("%d\n",ans);
return 0;
}