1182 完美字符串

1182 完美字符串

基准时间限制:1 秒 空间限制:131072 KB

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

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

Input

输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。

Output

由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。

Input示例

dad

Output示例

77
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char ch[10100];
struct str     //顺便把字符也记录下来了 ;
{
    char ch;
    int cnt;
} number[100];
bool cmp(str a, str b)
{
    return a.cnt >b.cnt;
}
int main()
{
    while(gets(ch))
    {
        int len= strlen(ch);
        sort(ch, ch+len);
        char cord= ch[0];
        int cnt= 0;
        int cntNum=1;
        for(int i=1; i<=len; i++)
        {
            if(ch[i]== ch[i-1])
                cntNum++;
            if(ch[i] !=ch[i-1])
            {
                number[cnt].ch= cord;
                number[cnt].cnt=cntNum;
                cntNum=1;
                cord= ch[i];
                cnt++;
            }
        }
        sort(number, number+ cnt, cmp);
        int rec =0;
        int init=26;
        for(int i=0; i< cnt; i++)
        {
            rec+= init* number[i].cnt;
            init--;
        }
        printf("%d\n", rec);

    }
    return 0;
}
时间: 2024-10-13 02:28:43

1182 完美字符串的相关文章

1090 3个数和为0 1091 线段的重叠 1182 完美字符串 1283 最小周长 1284 2 3 5 7的倍数

1090 3个数和为0 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序. Input 第1行,1个数N,N为数组的长度(0 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9) Output 如果没有符合条件的组合,输出No Solu

51Nod 1182 完美字符串 (贪心)

约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同.给定一个字符串,输出它的最大可能的完美度.例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77. Input 输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符. Output 由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度.

51Nod 1182 完美字符串

Input示例 dad Output示例 77 #include "bits/stdc++.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 10010 #define MOD 10 using namespace std; char str[N]; map<char,int> m; vector<int> v;

51nod贪心算法入门-----完美字符串

约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同.给定一个字符串,输出它的最大可能的完美度.例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77. //这题水题,只要把每个字母出现的次数统计出来然后再排序一下就OK了. #include<stdio.h>#include<iostream>#include<

贪心基础入门讲解一——完美字符串

约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同.给定一个字符串,输出它的最大可能的完美度.例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77. 分析: 由排序不等式,出现次数最多的字母显然应该给26.所以这个题目变成了统计每种字母出现的次数了,然后按照出现次数从大到小,依次分配从高到低的权值.这就是最朴素的贪心思想. 输

完美字符串

1 #include <bits/stdc++.h> 2 #define _xx ios_base::sync_with_stdio(0);cin.tie(0); 3 using namespace std; 4 typedef long long ll; 5 int main() 6 { 7 int a[27]; 8 memset(a, 0, sizeof(a)); 9 string s; 10 cin >> s; 11 for(int i = 0; i < s.size(

51nod贪心算法教程

51nod确实是一个好oj,题目质量不错,wa了还放数据,学习算法来说挺好的,这次我做了几个水的贪心,虽然水,但是确实都很典型. 教程链接:http://www.51nod.com/tutorial/list.html 完美字符串 约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数.   约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同.给定一个字符串,输出它的最大可能的完美度.例如:dad,你可以将

《程序设计技术》课程辅助学习资料

本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定一个坚实的基础. 自己编写程序也是学习编程必不可少的一个环节.自己编写是否正确可以通过OJ系统来验证.选做OJ的程序设计题方便于评价自己所写的程序是否正确.想要提高编写程序的能力并且达到更高的水平,从各个OJ中选做一些编程题是十分必要的. 文中提供了CCF-CSP认证考试历年 试题的第1题的题解.这些题解中都

贪心法_1 2016.5.16

所谓"贪心算法"是指: 在对问题求解时,总是作出在当前看来是最好的选择 也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明) 特别说明: 若要用贪心算法求解某问题的整体最优解,必须首先证明贪心思想在该问题的应用结果就是最优解!! 贪心算法不是对所有问题都能得到整体最优解 关键是贪心策略的选择,选择的贪心策略必须具备无后效性 即某个状态以前的过程不会影响以后的状态,只与当前状态有关 贪心算法的证明 贪心算法的正确性,必须有严格意义的证明,一般