• 完美字符串


    约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。

    约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。

    分析: 由排序不等式,出现次数最多的字母显然应该给26。所以这个题目变成了统计每种字母出现的次数了,然后按照出现次数从大到小,依次分配从高到低的权值。这就是最朴素的贪心思想。

    输入

    输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。
    输出
     
    由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。
     
    输入示例

    dad

    输出示例

    77
     1 /*********************************
     2 *   日期:2013-11-03
     3 *   作者:SJF0115
     4 *   题号: 题目 字符串的完美度
     5 *   来源:http://hero.pongo.cn/Question/Details?ID=71&ExamID=69
     6 *   结果:AC
     7 *   来源:庞果网
     8 *   总结:
     9 **********************************/
    10 #include<iostream>
    11 #include<stdio.h>
    12 #include<string>
    13 using namespace std;
    14 
    15 int cmp(const void*a, const void*b)
    16 {
    17     return *(int*)b - *(int*)a;
    18 }
    19 
    20 int perfect(const string &s) {
    21     int i;
    22     int len = s.size();
    23     int count[26] = { 0 };
    24     //统计字母个数
    25     for (i = 0;i < len;i++) {
    26         if (s[i] >= 'A' && s[i] <= 'Z') {
    27             count[s[i] - 'A'] ++;
    28         }
    29         else if (s[i] >= 'a' && s[i] <= 'z') {
    30             count[s[i] - 'a'] ++;
    31         }
    32     }
    33     //从大到小排序
    34     qsort(count, 26, sizeof(count[0]), cmp);
    35     int perfectDegree = 26;
    36     int sum = 0;
    37     //计算完美度
    38     for (i = 0;i < 26;i++) {
    39         sum += count[i] * perfectDegree;
    40         perfectDegree--;
    41     }
    42     return sum;
    43 }
    44 
    45 int main()
    46 {
    47     int i, n;
    48     string str;
    49     while (cin >> str) {
    50         printf("%d
    ", perfect(str));
    51     }
    52     return 0;
    53 }
    不犯罪盗版→提高自我技术
  • 相关阅读:
    C++程序算法题--N皇后
    C++程序算法题----迷宫(一)
    C++程序算法题----上台阶2
    cvpr论文爬取——热词云展示(WEB)
    Android项目——HttpUrlConnection上传文件(图片)
    世界疫情——懒加载优化
    第六周学习进度总结
    人月神话读书笔记(一)
    团队项目——铁大百晓生(视频会议讨论)
    构建之法读书笔记(三)
  • 原文地址:https://www.cnblogs.com/zoudajia/p/5508494.html
Copyright © 2020-2023  润新知