[2016-05-10][51nod][1182 完美字符串]

  • 时间:2016-05-10 09:54:57 星期二

  • 题目编号:[2016-05-10][51nod][1182 完美字符串]

  • 题目大意:

  • 约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
    约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。
  • 分析:

  • 统计每个字母出现的次数,排序,然后相乘即可
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<ctype.h>
  4. #include<algorithm>
  5. using namespace std;
  6. const int maxn = 1E4 + 10;
  7. char str[maxn];int v[26];
  8. int main(){
  9. scanf("%s",str);
  10. int sz = strlen(str),ans = 0;
  11. memset(v,0,sizeof(v));
  12. for(int i = 0 ; i < sz; ++i){
  13. if(isupper(str[i])){
  14. ++v[str[i] - 'A'];
  15. }else if(islower(str[i])){
  16. ++v[str[i] - 'a'];
  17. }
  18. }
  19. sort(v,v+26);
  20. for(int i = 25 ; i >= 0 ; --i){
  21. ans += v[i] * (i+1);
  22. }
  23. printf("%d\n",ans);
  24. return 0;
  25. }


来自为知笔记(Wiz)


posted on 2016-05-10 09:57  红洋  阅读(117)  评论(0编辑  收藏  举报

导航